From ecb7935896012da551255711edb1b6e381948c2f Mon Sep 17 00:00:00 2001 From: olOwOlo <26087907+olOwOlo@users.noreply.github.com> Date: Mon, 31 Dec 2018 20:28:27 +0800 Subject: [PATCH] feat(flowchart): support keyword `flow` Closes #113 --- data/even/assets.json | 4 +- .../content/post/js-flowchart-diagrams.md | 42 ++++++++++++++++++- src/js/even.js | 2 +- ...n.ece58db6.min.js => even.26188efa.min.js} | 4 +- static/dist/even.93844dae.min.css.map | 1 - ...93844dae.min.css => even.c2a46f00.min.css} | 4 +- static/dist/even.ece58db6.min.js.map | 1 - 7 files changed, 48 insertions(+), 10 deletions(-) rename static/dist/{even.ece58db6.min.js => even.26188efa.min.js} (74%) delete mode 100644 static/dist/even.93844dae.min.css.map rename static/dist/{even.93844dae.min.css => even.c2a46f00.min.css} (99%) delete mode 100644 static/dist/even.ece58db6.min.js.map diff --git a/data/even/assets.json b/data/even/assets.json index 043785e..3175026 100644 --- a/data/even/assets.json +++ b/data/even/assets.json @@ -1,6 +1,6 @@ { "even": { - "css": "even.93844dae.min.css", - "js": "even.ece58db6.min.js" + "css": "even.c2a46f00.min.css", + "js": "even.26188efa.min.js" } } \ No newline at end of file diff --git a/exampleSite/content/post/js-flowchart-diagrams.md b/exampleSite/content/post/js-flowchart-diagrams.md index 1851333..f6493d5 100644 --- a/exampleSite/content/post/js-flowchart-diagrams.md +++ b/exampleSite/content/post/js-flowchart-diagrams.md @@ -41,7 +41,7 @@ flowchartDiagrams: ## Usage -```flowchart +```flow st=>start: Start|past:>http://www.google.com[blank] e=>end: End:>http://www.google.com op1=>operation: My Operation|past @@ -61,6 +61,46 @@ c2(no)->op2->e +{{< highlight "linenos=table" >}} +```flow +st=>start: Start|past:>http://www.google.com[blank] +e=>end: End:>http://www.google.com +op1=>operation: My Operation|past +op2=>operation: Stuff|current +sub1=>subroutine: My Subroutine|invalid +cond=>condition: Yes +or No?|approved:>http://www.google.com +c2=>condition: Good idea|rejected +io=>inputoutput: catch something...|request + +st->op1(right)->cond +cond(yes, right)->c2 +cond(no)->sub1(left)->op1 +c2(yes)->io->e +c2(no)->op2->e +``` +{{< / highlight >}} + +## Legacy Usage + +```flowchart +st=>start: Start|past:>http://www.google.com[blank] +e=>end: End:>http://www.google.com +op1=>operation: My Operation|past +op2=>operation: Stuff|current +sub1=>subroutine: My Subroutine|invalid +cond=>condition: Yes +or No?|approved:>http://www.google.com +c2=>condition: Good idea|rejected +io=>inputoutput: catch something...|request + +st->op1(right)->cond +cond(yes, right)->c2 +cond(no)->sub1(left)->op1 +c2(yes)->io->e +c2(no)->op2->e +``` + ```flowchart st=>start: Start|past:>http://www.google.com[blank] e=>end: End:>http://www.google.com diff --git a/src/js/even.js b/src/js/even.js index a2cee48..8f8497a 100644 --- a/src/js/even.js +++ b/src/js/even.js @@ -221,7 +221,7 @@ Even._linkToc = function() { Even.flowchart = function() { if (!window.flowchart) return; - const blocks = document.querySelectorAll('pre code.language-flowchart'); + const blocks = document.querySelectorAll('pre code.language-flowchart, pre code.language-flow'); for (let i = 0; i < blocks.length; i++) { if (!window.hljs && i % 2 === 0) continue; diff --git a/static/dist/even.ece58db6.min.js b/static/dist/even.26188efa.min.js similarity index 74% rename from static/dist/even.ece58db6.min.js rename to static/dist/even.26188efa.min.js index 0118a16..41ecff7 100644 --- a/static/dist/even.ece58db6.min.js +++ b/static/dist/even.26188efa.min.js @@ -1,2 +1,2 @@ -!function(t){var o={};function a(e){if(o[e])return o[e].exports;var n=o[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=o,a.d=function(e,n,t){a.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(n,e){if(1&e&&(n=a(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)a.d(t,o,function(e){return n[e]}.bind(null,o));return t},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="",a(a.s=1)}([function(e,n,t){},function(e,n,t){"use strict";t.r(n);var o={backToTop:function(){var e=$("#back-to-top");$(window).scroll(function(){100<$(window).scrollTop()?e.fadeIn(1e3):e.fadeOut(1e3)}),e.click(function(){$("body,html").animate({scrollTop:0})})},mobileNavbar:function(){var e=$("#mobile-navbar"),n=$(".mobile-navbar-icon"),t=new Slideout({panel:document.getElementById("mobile-panel"),menu:document.getElementById("mobile-menu"),padding:180,tolerance:70});t.disableTouch(),n.click(function(){t.toggle()}),t.on("beforeopen",function(){e.addClass("fixed-open"),n.addClass("icon-click").removeClass("icon-out")}),t.on("beforeclose",function(){e.removeClass("fixed-open"),n.addClass("icon-out").removeClass("icon-click")}),$("#mobile-panel").on("touchend",function(){t.isOpen()&&n.click()})},_initToc:function(){var n=$(".post-toc"),e=$(".post-footer");if(n.length){var t=n.offset().top-20,o=e.offset().top-n.height()-20,a={start:{position:"absolute",top:t},process:{position:"fixed",top:20},end:{position:"absolute",top:o}};$(window).scroll(function(){var e=$(window).scrollTop();ee[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(s,e);if($(r).removeClass("active"),$(l).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},fancybox:function(){$.fancybox&&($(".post-content").each(function(){$(this).find("img").each(function(){$(this).wrap(''))})}),$(".fancybox").fancybox({selector:".fancybox",protect:!0}))},highlight:function(){for(var e=document.querySelectorAll("pre code"),n=0;n'.concat(l+1,"");for(var i="",s=0;s'.concat(a[s],"");t.className+=" highlight";var d=document.createElement("figure");d.className=t.className,d.innerHTML='
'.concat(c,'
').concat(i,"
"),o.parentElement.replaceChild(d,o)}},chroma:function(){for(var e=document.querySelectorAll(".highlight > .chroma"),n=0;n code"),a=o?o.className:"";t.className+=" "+a}},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n,t=e.children[0],o=t;1===o.children.length&&"UL"===(n=o.children[0].children[0]).tagName;)o=n;o!==t&&e.replaceChild(o,t)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),a=0;a').concat(r.innerHTML)}},flowchart:function(){if(window.flowchart)for(var e=document.querySelectorAll("pre code.language-flowchart"),n=0;n table"),n=0;ne[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(s,e);if($(r).removeClass("active"),$(l).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},fancybox:function(){$.fancybox&&($(".post-content").each(function(){$(this).find("img").each(function(){$(this).wrap(''))})}),$(".fancybox").fancybox({selector:".fancybox",protect:!0}))},highlight:function(){for(var e=document.querySelectorAll("pre code"),n=0;n'.concat(l+1,"");for(var i="",s=0;s'.concat(a[s],"");t.className+=" highlight";var d=document.createElement("figure");d.className=t.className,d.innerHTML='
'.concat(c,'
').concat(i,"
"),o.parentElement.replaceChild(d,o)}},chroma:function(){for(var e=document.querySelectorAll(".highlight > .chroma"),n=0;n code"),a=o?o.className:"";t.className+=" "+a}},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n,t=e.children[0],o=t;1===o.children.length&&"UL"===(n=o.children[0].children[0]).tagName;)o=n;o!==t&&e.replaceChild(o,t)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),a=0;a').concat(r.innerHTML)}},flowchart:function(){if(window.flowchart)for(var e=document.querySelectorAll("pre code.language-flowchart, pre code.language-flow"),n=0;n table"),n=0;n' and ''.\r\n$global-font-size: 16px !default;\r\n\r\n// Global width of ''.\r\n$global-body-width: 800px !default;\r\n\r\n// Padding of container main\r\n$global-container-padding: 0 20px !default;\r\n\r\n// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px.\r\n$global-lineheight: 1.5 !default;\r\n\r\n// Font family of the site.\r\n$global-font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif !default;\r\n\r\n// Serif font family of the site.\r\n$global-serif-font-family: Athelas, STHeiti, Microsoft Yahei, serif !default;\r\n\r\n// Background color of the site.\r\n$global-background: $white !default;\r\n\r\n// Headings font size of the site.\r\n$global-headings: (\r\n h1: 26px,\r\n h2: 24px,\r\n h3: 20px,\r\n h4: 16px,\r\n h5: 14px,\r\n h6: 14px\r\n) !default;\r\n\r\n\r\n// ========== Header ========== //\r\n// Padding of the site header.\r\n$header-padding: 20px 20px !default;\r\n\r\n// Font family: Chancery\r\n@font-face {\r\n font-family: 'Chancery';\r\n src: url('../fonts/chancery/apple-chancery-webfont.eot');\r\n src: local('Apple Chancery'), url('../fonts/chancery/apple-chancery-webfont.eot?#iefix') format('embedded-opentype'),\r\n url('../fonts/chancery/apple-chancery-webfont.woff2') format('woff2'),\r\n url('../fonts/chancery/apple-chancery-webfont.woff') format('woff'),\r\n url('../fonts/chancery/apple-chancery-webfont.ttf') format('truetype'),\r\n url('../fonts/chancery/apple-chancery-webfont.svg#apple-chancery') format('svg');\r\n font-weight: lighter;\r\n font-style: normal;\r\n}\r\n\r\n// Font size of the logo.\r\n$logo-font-size: 48px !default;\r\n\r\n// Font family of the logo.\r\n$logo-font-family: 'Chancery', cursive, LiSu, sans-serif !default;\r\n\r\n// Margin of menu item.\r\n$menu-item-margin-left: 10px !default;\r\n\r\n// Margin of menu item in mobile.\r\n$menu-item-mobile-margin: 5px !default;\r\n\r\n// Font size of menu item link.\r\n$menu-link-font-size: 18px !default;\r\n\r\n// Height of the mobile header.\r\n$mobile-navbar-height: 50px !default;\r\n\r\n// ========== Post ========== //\r\n// Margin bottom of post list.\r\n$post-list-margin-bottom: 20px !default;\r\n\r\n// Padding of the post.\r\n$post-padding: 1.5em 0 !default;\r\n\r\n// Border top of the post + post.\r\n$post-border: 1px solid $light-gray !default;\r\n\r\n// Font size of post title.\r\n$post-title-font-size: 27px !default;\r\n\r\n// Font weight of post title.\r\n$post-title-font-weight: 400 !default;\r\n\r\n// Margin top of the post meta (post time).\r\n$post-meta-margin-top: 5px !default;\r\n\r\n// Font color of the post meta.\r\n$post-meta-font-color: $dark-gray !default;\r\n\r\n// Border bottom of the read more link when hover it.\r\n$post-readMore-border-bottom: 1px solid $theme-color !default;\r\n\r\n// Margin top of the post footer.\r\n$post-footer-margin-top: 20px !default;\r\n\r\n// Border top of post footer.\r\n$post-footer-border-top: 1px solid $light-gray !default;\r\n\r\n// Padding of the post tags.\r\n$post-tags-padding: 15px 0 !default;\r\n\r\n// Font size of post pagination.\r\n$post-nav-font-size: 18px !default;\r\n\r\n\r\n// ========== TOC ========== //\r\n// Width of the post toc.\r\n$post-toc-width: 200px !default;\r\n\r\n// Backgroud color of the post toc.\r\n$post-toc-backgroud: rgba($deputy-color, 0.6) !default;\r\n\r\n// Margin left of the post toc.\r\n$post-toc-margin-left: $global-body-width - 15px !default;\r\n\r\n// Font size of the post toc title.\r\n$post-toc-title-size: 20px !default;\r\n\r\n// Font size of the post toc content.\r\n$post-toc-content: 15px !default;\r\n\r\n// List style of the post toc list.\r\n$post-toc-list-style: square !default;\r\n\r\n// Max screen media of the post toc.\r\n$toc-max-sreen-width: 2 * $post-toc-width + $post-toc-margin-left !default;\r\n\r\n// ========== Content ========== //\r\n// Headings anchor.\r\n$content-headings-anchor: \"\" !default;\r\n\r\n// Border bottom of the link when hover it.\r\n$content-link-border: 1px solid $theme-color !default;\r\n\r\n// Background color of the blockquote.\r\n$content-blockquote-backgroud: rgba($theme-color, 0.05) !default;\r\n\r\n// Border left of the blockquote.\r\n$content-blockquote-border-left: 3px solid rgba($theme-color, 0.3) !default;\r\n\r\n// Border color of the table.\r\n$content-table-border-color: darken($deputy-color, 3%) !default;\r\n\r\n// ========== Code ========== //\r\n// Color of the code.\r\n$code-color: #c7254e !default;\r\n\r\n// Font size of code.\r\n$code-font-size: 13px !default;\r\n\r\n// Font family of the code.\r\n$code-font-family: Consolas, Monaco, Menlo, Consolas, monospace !default;\r\n\r\n// Color of code highlight, solarized.\r\n$code-highlight-color: (\r\n comment: #93a1a1,\r\n keyword: #859900,\r\n number: #2aa198,\r\n title: #268bd2,\r\n attribute: #b58900,\r\n symbol: #cb4b16,\r\n built_in: #dc322f,\r\n formula: #eee8d5\r\n) !default;\r\n\r\n// Code type list.\r\n$code-type-list: (\r\n // Custom code type\r\n language-bash: \"Bash\",\r\n language-c: \"C\",\r\n language-cs: \"C#\",\r\n language-cpp: \"C++\",\r\n language-css: \"CSS\",\r\n language-coffeescript: \"CoffeeScript\",\r\n language-html: \"HTML\",\r\n language-xml: \"XML\",\r\n language-http: \"HTTP\",\r\n language-json: \"JSON\",\r\n language-java: \"Java\",\r\n language-js: \"JavaScript\",\r\n language-javascript: \"JavaScript\",\r\n language-makefile: \"Makefile\",\r\n language-markdown: \"Markdown\",\r\n language-objectivec: \"Objective-C\",\r\n language-php: \"PHP\",\r\n language-perl: \"Perl\",\r\n language-python: \"Python\",\r\n language-ruby: \"Ruby\",\r\n language-sql: \"SQL\",\r\n language-shell: \"Shell\",\r\n\r\n language-erlang: \"Erlang\",\r\n language-go: \"Go\",\r\n language-go-html-template: \"Go HTML Template\",\r\n language-groovy: \"Groovy\",\r\n language-haskell: \"Haskell\",\r\n language-kotlin: \"Kotlin\",\r\n language-clojure: \"Clojure\",\r\n language-less: \"Less\",\r\n language-lisp: \"Lisp\",\r\n language-lua: \"Lua\",\r\n language-matlab: \"Matlab\",\r\n language-rust: \"Rust\",\r\n language-scss: \"Scss\",\r\n language-scala: \"Scala\",\r\n language-swift: \"Swift\",\r\n language-typescript: \"TypeScript\",\r\n language-yml: \"YAML\",\r\n language-yaml: \"YAML\",\r\n language-toml: \"TOML\"\r\n) !default;\r\n\r\n// Color of the code background.\r\n$code-background: $deputy-color !default;\r\n\r\n\r\n// ========== Pagination ========== //\r\n// Margin of the pagination.\r\n$pagination-margin: 2em 0 !default;\r\n\r\n// Font size of the pagination (Without post, post pagination see line 140).\r\n$pagination-font-size: 20px !default;\r\n\r\n\r\n// ========== Footer ========== //\r\n// Margin top of the footer.\r\n$footer-margin-top: 2em !default;\r\n\r\n// Margin left of the social link.\r\n$social-link-margin-left: 10px !default;\r\n\r\n// Font size of the social icon.\r\n$social-icon-font-size: 30px !default;\r\n\r\n// Margin of the copyright.\r\n$copyright-margin: 10px 0 !default;\r\n\r\n\r\n// ========== Archive ========== //\r\n// Margin of the archive.\r\n$archive-margin: 2em 0px !default;\r\n\r\n// Max width of the archive.\r\n$archive-max-width: 550px !default;\r\n\r\n// Font size of the archive name.\r\n$archive-name-font-size: 30px !default;\r\n\r\n// Font size of the collection title.\r\n$collection-title-font-size: 28px !default;\r\n\r\n// Padding of the archive post.\r\n$archive-post-padding: 3px 20px !default;\r\n\r\n// Padding of the archive post in mobile.\r\n$archive-post-mobile-padding: 5px 10px !default;\r\n\r\n// Font size of the archive post time in mobile.\r\n$archive-post-mobile-time-font-size: 13px !default;\r\n\r\n// Border left of the archive post, use $archive-post-hover-border-left when hover it.\r\n$archive-post-border-left: 1px solid $gray !default;\r\n$archive-post-hover-border-left: 3px solid $theme-color !default;\r\n\r\n// Transition of the archive post when hover it.\r\n$archive-post-hover-transition: 0.2s ease-out !default;\r\n\r\n// Transform of the archive post when hover it.\r\n$archive-post-hover-transform: translateX(4px) !default;\r\n\r\n// ========== General Terms ========== //\r\n// Font size of the terms title.\r\n$terms-title-size: 18px !default;\r\n\r\n// Border bottom of the terms title.\r\n$terms-title-border-bottom: 2px solid $theme-color !default;\r\n\r\n// Margin of the terms link.\r\n$terms-link-margin: 5px 10px !default;\r\n\r\n// Font size of the terms count\r\n$terms-count-font-size: 12px !default;\r\n","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\r\n\r\n/**\r\n * 1. Set default font family to sans-serif.\r\n * 2. Prevent iOS text size adjust after orientation change, without disabling\r\n * user zoom.\r\n */\r\n\r\nhtml {\r\n font-family: sans-serif; /* 1 */\r\n -ms-text-size-adjust: 100%; /* 2 */\r\n -webkit-text-size-adjust: 100%; /* 2 */\r\n}\r\n\r\n/**\r\n * Remove default margin.\r\n */\r\n\r\nbody {\r\n margin: 0;\r\n}\r\n\r\n/* HTML5 display definitions\r\n ========================================================================== */\r\n\r\n/**\r\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\r\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\r\n * and Firefox.\r\n * Correct `block` display not defined for `main` in IE 11.\r\n */\r\n\r\narticle,\r\naside,\r\ndetails,\r\nfigcaption,\r\nfigure,\r\nfooter,\r\nheader,\r\nhgroup,\r\nmain,\r\nmenu,\r\nnav,\r\nsection,\r\nsummary {\r\n display: block;\r\n}\r\n\r\n/**\r\n * 1. Correct `inline-block` display not defined in IE 8/9.\r\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\r\n */\r\n\r\naudio,\r\ncanvas,\r\nprogress,\r\nvideo {\r\n display: inline-block; /* 1 */\r\n vertical-align: baseline; /* 2 */\r\n}\r\n\r\n/**\r\n * Prevent modern browsers from displaying `audio` without controls.\r\n * Remove excess height in iOS 5 devices.\r\n */\r\n\r\naudio:not([controls]) {\r\n display: none;\r\n height: 0;\r\n}\r\n\r\n/**\r\n * Address `[hidden]` styling not present in IE 8/9/10.\r\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\r\n */\r\n\r\n[hidden],\r\ntemplate {\r\n display: none;\r\n}\r\n\r\n/* Links\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove the gray background color from active links in IE 10.\r\n */\r\n\r\na {\r\n background-color: transparent;\r\n}\r\n\r\n/**\r\n * Improve readability when focused and also mouse hovered in all browsers.\r\n */\r\n\r\na:active,\r\na:hover {\r\n outline: 0;\r\n}\r\n\r\n/* Text-level semantics\r\n ========================================================================== */\r\n\r\n/**\r\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\r\n */\r\n\r\nabbr[title] {\r\n border-bottom: 1px dotted;\r\n}\r\n\r\n/**\r\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nb,\r\nstrong {\r\n font-weight: bold;\r\n}\r\n\r\n/**\r\n * Address styling not present in Safari and Chrome.\r\n */\r\n\r\ndfn {\r\n font-style: italic;\r\n}\r\n\r\n/**\r\n * Address variable `h1` font-size and margin within `section` and `article`\r\n * contexts in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nh1 {\r\n font-size: 2em;\r\n margin: 0.67em 0;\r\n}\r\n\r\n/**\r\n * Address styling not present in IE 8/9.\r\n */\r\n\r\nmark {\r\n background: #ff0;\r\n color: #000;\r\n}\r\n\r\n/**\r\n * Address inconsistent and variable font size in all browsers.\r\n */\r\n\r\nsmall {\r\n font-size: 80%;\r\n}\r\n\r\n/**\r\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\r\n */\r\n\r\nsub,\r\nsup {\r\n font-size: 75%;\r\n line-height: 0;\r\n position: relative;\r\n vertical-align: baseline;\r\n}\r\n\r\nsup {\r\n top: -0.5em;\r\n}\r\n\r\nsub {\r\n bottom: -0.25em;\r\n}\r\n\r\n/* Embedded content\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove border when inside `a` element in IE 8/9/10.\r\n */\r\n\r\nimg {\r\n border: 0;\r\n}\r\n\r\n/**\r\n * Correct overflow not hidden in IE 9/10/11.\r\n */\r\n\r\nsvg:not(:root) {\r\n overflow: hidden;\r\n}\r\n\r\n/* Grouping content\r\n ========================================================================== */\r\n\r\n/**\r\n * Address margin not present in IE 8/9 and Safari.\r\n */\r\n\r\nfigure {\r\n margin: 1em 40px;\r\n}\r\n\r\n/**\r\n * Address differences between Firefox and other browsers.\r\n */\r\n\r\nhr {\r\n -moz-box-sizing: content-box;\r\n box-sizing: content-box;\r\n height: 0;\r\n}\r\n\r\n/**\r\n * Contain overflow in all browsers.\r\n */\r\n\r\npre {\r\n overflow: auto;\r\n}\r\n\r\n/**\r\n * Address odd `em`-unit font size rendering in all browsers.\r\n */\r\n\r\ncode,\r\nkbd,\r\npre,\r\nsamp {\r\n font-family: monospace, monospace;\r\n font-size: 1em;\r\n}\r\n\r\n/* Forms\r\n ========================================================================== */\r\n\r\n/**\r\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\r\n * styling of `select`, unless a `border` property is set.\r\n */\r\n\r\n/**\r\n * 1. Correct color not being inherited.\r\n * Known issue: affects color of disabled elements.\r\n * 2. Correct font properties not being inherited.\r\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nbutton,\r\ninput,\r\noptgroup,\r\nselect,\r\ntextarea {\r\n color: inherit; /* 1 */\r\n font: inherit; /* 2 */\r\n margin: 0; /* 3 */\r\n}\r\n\r\n/**\r\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\r\n */\r\n\r\nbutton {\r\n overflow: visible;\r\n}\r\n\r\n/**\r\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\r\n * All other form control elements do not inherit `text-transform` values.\r\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\r\n * Correct `select` style inheritance in Firefox.\r\n */\r\n\r\nbutton,\r\nselect {\r\n text-transform: none;\r\n}\r\n\r\n/**\r\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\r\n * and `video` controls.\r\n * 2. Correct inability to style clickable `input` types in iOS.\r\n * 3. Improve usability and consistency of cursor style between image-type\r\n * `input` and others.\r\n */\r\n\r\nbutton,\r\nhtml input[type=\"button\"], /* 1 */\r\ninput[type=\"reset\"],\r\ninput[type=\"submit\"] {\r\n -webkit-appearance: button; /* 2 */\r\n cursor: pointer; /* 3 */\r\n}\r\n\r\n/**\r\n * Re-set default cursor for disabled elements.\r\n */\r\n\r\nbutton[disabled],\r\nhtml input[disabled] {\r\n cursor: default;\r\n}\r\n\r\n/**\r\n * Remove inner padding and border in Firefox 4+.\r\n */\r\n\r\nbutton::-moz-focus-inner,\r\ninput::-moz-focus-inner {\r\n border: 0;\r\n padding: 0;\r\n}\r\n\r\n/**\r\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\r\n * the UA stylesheet.\r\n */\r\n\r\ninput {\r\n line-height: normal;\r\n}\r\n\r\n/**\r\n * It's recommended that you don't attempt to style these elements.\r\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\r\n *\r\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\r\n * 2. Remove excess padding in IE 8/9/10.\r\n */\r\n\r\ninput[type=\"checkbox\"],\r\ninput[type=\"radio\"] {\r\n box-sizing: border-box; /* 1 */\r\n padding: 0; /* 2 */\r\n}\r\n\r\n/**\r\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\r\n * `font-size` values of the `input`, it causes the cursor style of the\r\n * decrement button to change from `default` to `text`.\r\n */\r\n\r\ninput[type=\"number\"]::-webkit-inner-spin-button,\r\ninput[type=\"number\"]::-webkit-outer-spin-button {\r\n height: auto;\r\n}\r\n\r\n/**\r\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\r\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\r\n * (include `-moz` to future-proof).\r\n */\r\n\r\ninput[type=\"search\"] {\r\n -webkit-appearance: textfield; /* 1 */\r\n -moz-box-sizing: content-box;\r\n -webkit-box-sizing: content-box; /* 2 */\r\n box-sizing: content-box;\r\n}\r\n\r\n/**\r\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\r\n * Safari (but not Chrome) clips the cancel button when the search input has\r\n * padding (and `textfield` appearance).\r\n */\r\n\r\ninput[type=\"search\"]::-webkit-search-cancel-button,\r\ninput[type=\"search\"]::-webkit-search-decoration {\r\n -webkit-appearance: none;\r\n}\r\n\r\n/**\r\n * Define consistent border, margin, and padding.\r\n */\r\n\r\nfieldset {\r\n border: 1px solid #c0c0c0;\r\n margin: 0 2px;\r\n padding: 0.35em 0.625em 0.75em;\r\n}\r\n\r\n/**\r\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\r\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\r\n */\r\n\r\nlegend {\r\n border: 0; /* 1 */\r\n padding: 0; /* 2 */\r\n}\r\n\r\n/**\r\n * Remove default vertical scrollbar in IE 8/9/10/11.\r\n */\r\n\r\ntextarea {\r\n overflow: auto;\r\n}\r\n\r\n/**\r\n * Don't inherit the `font-weight` (applied by a rule above).\r\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\r\n */\r\n\r\noptgroup {\r\n font-weight: bold;\r\n}\r\n\r\n/* Tables\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove most spacing between table cells.\r\n */\r\n\r\ntable {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n}\r\n\r\ntd,\r\nth {\r\n padding: 0;\r\n}","@charset \"UTF-8\";\n@font-face {\n font-family: 'Chancery';\n src: url(\"../fonts/chancery/apple-chancery-webfont.eot\");\n src: local(\"Apple Chancery\"), url(\"../fonts/chancery/apple-chancery-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/chancery/apple-chancery-webfont.woff2\") format(\"woff2\"), url(\"../fonts/chancery/apple-chancery-webfont.woff\") format(\"woff\"), url(\"../fonts/chancery/apple-chancery-webfont.ttf\") format(\"truetype\"), url(\"../fonts/chancery/apple-chancery-webfont.svg#apple-chancery\") format(\"svg\");\n font-weight: lighter;\n font-style: normal; }\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n/**\r\n * 1. Set default font family to sans-serif.\r\n * 2. Prevent iOS text size adjust after orientation change, without disabling\r\n * user zoom.\r\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\r\n * Remove default margin.\r\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\r\n ========================================================================== */\n/**\r\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\r\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\r\n * and Firefox.\r\n * Correct `block` display not defined for `main` in IE 11.\r\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\r\n * 1. Correct `inline-block` display not defined in IE 8/9.\r\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\r\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\r\n * Prevent modern browsers from displaying `audio` without controls.\r\n * Remove excess height in iOS 5 devices.\r\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\r\n * Address `[hidden]` styling not present in IE 8/9/10.\r\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\r\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\r\n ========================================================================== */\n/**\r\n * Remove the gray background color from active links in IE 10.\r\n */\na {\n background-color: transparent; }\n\n/**\r\n * Improve readability when focused and also mouse hovered in all browsers.\r\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\r\n ========================================================================== */\n/**\r\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\r\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\r\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\r\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\r\n * Address styling not present in Safari and Chrome.\r\n */\ndfn {\n font-style: italic; }\n\n/**\r\n * Address variable `h1` font-size and margin within `section` and `article`\r\n * contexts in Firefox 4+, Safari, and Chrome.\r\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\r\n * Address styling not present in IE 8/9.\r\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\r\n * Address inconsistent and variable font size in all browsers.\r\n */\nsmall {\n font-size: 80%; }\n\n/**\r\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\r\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\r\n ========================================================================== */\n/**\r\n * Remove border when inside `a` element in IE 8/9/10.\r\n */\nimg {\n border: 0; }\n\n/**\r\n * Correct overflow not hidden in IE 9/10/11.\r\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\r\n ========================================================================== */\n/**\r\n * Address margin not present in IE 8/9 and Safari.\r\n */\nfigure {\n margin: 1em 40px; }\n\n/**\r\n * Address differences between Firefox and other browsers.\r\n */\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0; }\n\n/**\r\n * Contain overflow in all browsers.\r\n */\npre {\n overflow: auto; }\n\n/**\r\n * Address odd `em`-unit font size rendering in all browsers.\r\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\r\n ========================================================================== */\n/**\r\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\r\n * styling of `select`, unless a `border` property is set.\r\n */\n/**\r\n * 1. Correct color not being inherited.\r\n * Known issue: affects color of disabled elements.\r\n * 2. Correct font properties not being inherited.\r\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\r\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\r\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\r\n */\nbutton {\n overflow: visible; }\n\n/**\r\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\r\n * All other form control elements do not inherit `text-transform` values.\r\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\r\n * Correct `select` style inheritance in Firefox.\r\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\r\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\r\n * and `video` controls.\r\n * 2. Correct inability to style clickable `input` types in iOS.\r\n * 3. Improve usability and consistency of cursor style between image-type\r\n * `input` and others.\r\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\r\n * Re-set default cursor for disabled elements.\r\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\r\n * Remove inner padding and border in Firefox 4+.\r\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\r\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\r\n * the UA stylesheet.\r\n */\ninput {\n line-height: normal; }\n\n/**\r\n * It's recommended that you don't attempt to style these elements.\r\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\r\n *\r\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\r\n * 2. Remove excess padding in IE 8/9/10.\r\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\r\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\r\n * `font-size` values of the `input`, it causes the cursor style of the\r\n * decrement button to change from `default` to `text`.\r\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\r\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\r\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\r\n * (include `-moz` to future-proof).\r\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n /* 2 */\n box-sizing: content-box; }\n\n/**\r\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\r\n * Safari (but not Chrome) clips the cancel button when the search input has\r\n * padding (and `textfield` appearance).\r\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\r\n * Define consistent border, margin, and padding.\r\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\r\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\r\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\r\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\r\n * Remove default vertical scrollbar in IE 8/9/10/11.\r\n */\ntextarea {\n overflow: auto; }\n\n/**\r\n * Don't inherit the `font-weight` (applied by a rule above).\r\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\r\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\r\n ========================================================================== */\n/**\r\n * Remove most spacing between table cells.\r\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\nhtml {\n font-size: 16px;\n box-sizing: border-box; }\n\nbody {\n padding: 0;\n margin: 0;\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Arial, sans-serif;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.5;\n color: #34495e;\n background: #fefefe;\n scroll-behavior: smooth;\n border-top: 3px solid #c05b4d; }\n\n@media screen and (max-width: 800px) {\n body {\n border-top: 0; } }\n\n::selection {\n background: #c05b4d;\n color: #fff; }\n\nimg {\n max-width: 100%;\n height: auto;\n display: inline-block;\n vertical-align: middle; }\n\na {\n color: #34495e;\n text-decoration: none; }\n\nh1 {\n font-size: 26px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh2 {\n font-size: 24px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh3 {\n font-size: 20px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh4 {\n font-size: 16px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh5 {\n font-size: 14px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh6 {\n font-size: 14px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\n.container {\n margin: 0 auto;\n width: 800px; }\n\n@media screen and (max-width: 800px) {\n .container {\n width: 100%;\n box-shadow: -1px -5px 5px #cacaca; } }\n\n.content-wrapper {\n padding: 0 20px; }\n\n.video-container {\n position: relative;\n padding-bottom: 56.25%;\n /* 16:9 */\n padding-top: 25px;\n height: 0; }\n\n.video-container iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n@font-face {\n font-family: 'iconfont';\n src: url(\"../fonts/iconfont/iconfont.eot\");\n src: url(\"../fonts/iconfont/iconfont.eot#iefix\") format(\"embedded-opentype\"), url(\"../fonts/iconfont/iconfont.woff\") format(\"woff\"), url(\"../fonts/iconfont/iconfont.ttf\") format(\"truetype\"), url(\"../fonts/iconfont/iconfont.svg#iconfont\") format(\"svg\"); }\n\n.iconfont, .post .post-content .admonition .admonition-title:before, .post .post-content details.admonition summary:after {\n font-family: \"iconfont\" !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n -webkit-text-stroke-width: 0.2px;\n cursor: pointer;\n /* Enable Ligatures ================ */\n letter-spacing: 0;\n font-feature-settings: \"liga\";\n font-variant-ligatures: discretionary-ligatures;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; }\n\n/* Social Icon */\n.icon-bilibili:before {\n content: \"\\e900\";\n font-size: .9em;\n position: relative;\n top: -4px; }\n\n.icon-instagram:before {\n font-size: .95em;\n content: \"\\e611\";\n position: relative;\n top: 1px; }\n\n.icon-douban:before {\n content: \"\\e610\";\n position: relative;\n top: 2px; }\n\n.icon-tumblr:before {\n content: \"\\e69f\";\n font-size: .85em;\n position: relative;\n top: -2px; }\n\n.icon-linkedin:before {\n content: \"\\e60d\";\n position: relative;\n top: -2px; }\n\n.icon-twitter:before {\n content: \"\\e600\"; }\n\n.icon-weibo:before {\n content: \"\\e602\";\n position: relative;\n top: 2px; }\n\n.icon-stack-overflow:before {\n content: \"\\e902\";\n font-size: .85em;\n position: relative;\n top: -4px; }\n\n.icon-email:before {\n content: \"\\e605\";\n position: relative;\n top: -2px; }\n\n.icon-facebook:before {\n content: \"\\e601\";\n font-size: .95em;\n position: relative;\n top: -2px; }\n\n.icon-gitlab:before {\n content: \"\\e901\";\n font-size: .9em;\n position: relative;\n top: -4px; }\n\n.icon-github:before {\n content: \"\\e606\";\n position: relative;\n top: -1px; }\n\n.icon-rss:before {\n content: \"\\e604\"; }\n\n.icon-google:before {\n content: \"\\e609\";\n position: relative;\n top: 2px; }\n\n.icon-zhihu:before {\n content: \"\\e607\";\n font-size: .9em; }\n\n.icon-pocket:before {\n content: \"\\e856\";\n position: relative;\n top: 2px; }\n\n/* Generic Icon */\n.icon-heart:before {\n content: \"\\e608\"; }\n\n.icon-right:before {\n content: \"\\e60a\"; }\n\n.icon-left:before {\n content: \"\\e60b\"; }\n\n.icon-up:before {\n content: \"\\e60c\"; }\n\n.icon-close:before {\n content: \"\\e60f\"; }\n\n.icon-link:before {\n content: \"\\e909\"; }\n\n/* Admonition Icon */\n/*\r\n.icon-chevron-down:before {\r\n content: \"\\e908\";\r\n}\r\n.icon-format-quote:before {\r\n content: \"\\e904\";\r\n}\r\n.icon-pencil:before {\r\n content: \"\\e903\";\r\n}\r\n.icon-list-numbered:before {\r\n content: \"\\e9b9\";\r\n}\r\n.icon-list:before {\r\n content: \"\\e9bb\";\r\n}\r\n.icon-warning:before {\r\n content: \"\\ea07\";\r\n}\r\n.icon-question:before {\r\n content: \"\\ea09\";\r\n}\r\n.icon-info:before {\r\n content: \"\\ea0c\";\r\n}\r\n.icon-cross:before {\r\n content: \"\\ea0f\";\r\n}\r\n.icon-checkmark:before {\r\n content: \"\\ea10\";\r\n}\r\n.icon-fire:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-danger:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-flame:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-hot:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-bulb:before {\r\n content: \"\\e906\";\r\n}\r\n*/\n.header {\n padding: 20px 20px; }\n .header:before, .header:after {\n content: \" \";\n display: table; }\n .header:after {\n clear: both; }\n .header .logo-wrapper {\n float: left; }\n .header .logo-wrapper .logo {\n font-size: 48px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n @media screen and (max-width: 800px) {\n .header .logo-wrapper {\n display: none; } }\n .header .site-navbar {\n float: right; }\n .header .site-navbar .menu {\n display: inline-block;\n position: relative;\n padding-left: 0;\n padding-right: 25px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .header .site-navbar .menu .menu-item {\n display: inline-block;\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden; }\n .header .site-navbar .menu .menu-item + .menu-item {\n margin-left: 10px; }\n .header .site-navbar .menu .menu-item:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: #c05b4d;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out; }\n .header .site-navbar .menu .menu-item.active:before, .header .site-navbar .menu .menu-item:active:before, .header .site-navbar .menu .menu-item:focus:before, .header .site-navbar .menu .menu-item:hover:before {\n right: 0;\n left: 0; }\n .header .site-navbar .menu .menu-item-link {\n font-size: 18px; }\n @media screen and (max-width: 800px) {\n .header .site-navbar {\n display: none; } }\n\n@media screen and (max-width: 800px) {\n .header {\n padding: 50px 0 0;\n text-align: center; } }\n\n.posts {\n margin-bottom: 20px;\n border-bottom: 1px solid #e6e6e6; }\n\n.post {\n padding: 1.5em 0; }\n .post + .post {\n border-top: 1px solid #e6e6e6; }\n .post .post-header {\n margin-bottom: 20px; }\n .post .post-header .post-title {\n margin: 0;\n font-size: 27px;\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-header .post-link {\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden; }\n .post .post-header .post-link:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: #c05b4d;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out; }\n .post .post-header .post-link.active:before, .post .post-header .post-link:active:before, .post .post-header .post-link:focus:before, .post .post-header .post-link:hover:before {\n right: 0;\n left: 0; }\n .post .post-header .post-meta {\n font-size: 14px;\n color: #8a8a8a; }\n .post .post-header .post-meta .post-time {\n font-size: 15px; }\n .post .post-header .post-meta .post-category {\n display: inline; }\n .post .post-header .post-meta .post-category a {\n color: inherit; }\n .post .post-header .post-meta .post-category a::before {\n content: '·'; }\n .post .post-header .post-meta .post-category a:hover {\n color: #c05b4d; }\n .post .post-header .post-meta .more-meta::before {\n content: '·'; }\n .post .post-toc {\n position: absolute;\n width: 200px;\n margin-left: 785px;\n padding: 10px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n border-radius: 5px;\n background: rgba(248, 245, 236, 0.6);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125);\n word-wrap: break-word;\n box-sizing: border-box; }\n .post .post-toc .post-toc-title {\n margin: 0 10px;\n font-size: 20px;\n font-weight: 400;\n text-transform: uppercase; }\n .post .post-toc .post-toc-content {\n font-size: 15px; }\n .post .post-toc .post-toc-content.always-active ul {\n display: block; }\n .post .post-toc .post-toc-content > nav > ul {\n margin: 10px 0; }\n .post .post-toc .post-toc-content ul {\n padding-left: 20px;\n list-style: square; }\n .post .post-toc .post-toc-content ul ul {\n padding-left: 15px;\n display: none; }\n .post .post-toc .post-toc-content ul .has-active > ul {\n display: block; }\n .post .post-toc .post-toc-content .toc-link.active {\n color: #c05b4d; }\n @media screen and (max-width: 1185px) {\n .post .post-toc {\n display: none; } }\n .post .post-content {\n word-wrap: break-word; }\n .post .post-content h1 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h1 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h1 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h1 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h1 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h1:hover .icon-link {\n visibility: visible; }\n .post .post-content h2 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h2 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h2 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h2 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h2 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h2:hover .icon-link {\n visibility: visible; }\n .post .post-content h3 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h3 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h3 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h3 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h3 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h3:hover .icon-link {\n visibility: visible; }\n .post .post-content h4 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h4 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h4 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h4 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h4 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h4:hover .icon-link {\n visibility: visible; }\n .post .post-content h5 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h5 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h5 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h5 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h5 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h5:hover .icon-link {\n visibility: visible; }\n .post .post-content h6 {\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h6 .anchor {\n float: left;\n line-height: 1;\n margin-left: -20px;\n padding-right: 4px; }\n .post .post-content h6 .anchor:hover {\n border-bottom: initial; }\n .post .post-content h6 .anchor .icon-link {\n visibility: hidden;\n font-size: 16px; }\n .post .post-content h6 .anchor .icon-link:before {\n vertical-align: middle; }\n .post .post-content h6:hover .icon-link {\n visibility: visible; }\n .post .post-content a {\n color: #c05b4d;\n word-break: break-all; }\n .post .post-content a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content a.fancybox {\n border: 0; }\n .post .post-content blockquote {\n margin: 2em 0;\n padding: 10px 20px;\n position: relative;\n color: rgba(52, 73, 94, 0.8);\n background-color: rgba(192, 91, 77, 0.05);\n border-left: 3px solid rgba(192, 91, 77, 0.3);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125); }\n .post .post-content blockquote p {\n margin: 0; }\n .post .post-content img {\n display: inline-block;\n max-width: 100%; }\n .post .post-content .table-wrapper {\n overflow-x: auto; }\n .post .post-content .table-wrapper > table {\n max-width: 100%;\n margin: 10px 0;\n border-spacing: 0;\n box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.125); }\n .post .post-content .table-wrapper > table thead {\n background: #f8f5ec; }\n .post .post-content .table-wrapper > table th, .post .post-content .table-wrapper > table td {\n padding: 5px 15px;\n border: 1px double #f4efe1; }\n .post .post-content .table-wrapper > table tr:hover {\n background-color: #f8f5ec; }\n .post .post-content code, .post .post-content pre {\n padding: 7px;\n font-size: 13px;\n font-family: Consolas, Monaco, Menlo, Consolas, monospace;\n background: #f8f5ec; }\n .post .post-content code {\n padding: 3px 5px;\n border-radius: 4px;\n color: #c7254e; }\n .post .post-content figure.highlight {\n margin: 1em 0;\n border-radius: 5px;\n overflow-x: auto;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125);\n position: relative; }\n .post .post-content figure.highlight table {\n position: relative; }\n .post .post-content figure.highlight table::after {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n padding: 2px 7px;\n font-size: 13px;\n font-weight: bold;\n color: #b1b1b1;\n background: #f4efe1;\n content: 'Code'; }\n .post .post-content figure.highlight.language-bash > table::after {\n content: \"Bash\"; }\n .post .post-content figure.highlight.language-c > table::after {\n content: \"C\"; }\n .post .post-content figure.highlight.language-cs > table::after {\n content: \"C#\"; }\n .post .post-content figure.highlight.language-cpp > table::after {\n content: \"C++\"; }\n .post .post-content figure.highlight.language-css > table::after {\n content: \"CSS\"; }\n .post .post-content figure.highlight.language-coffeescript > table::after {\n content: \"CoffeeScript\"; }\n .post .post-content figure.highlight.language-html > table::after {\n content: \"HTML\"; }\n .post .post-content figure.highlight.language-xml > table::after {\n content: \"XML\"; }\n .post .post-content figure.highlight.language-http > table::after {\n content: \"HTTP\"; }\n .post .post-content figure.highlight.language-json > table::after {\n content: \"JSON\"; }\n .post .post-content figure.highlight.language-java > table::after {\n content: \"Java\"; }\n .post .post-content figure.highlight.language-js > table::after {\n content: \"JavaScript\"; }\n .post .post-content figure.highlight.language-javascript > table::after {\n content: \"JavaScript\"; }\n .post .post-content figure.highlight.language-makefile > table::after {\n content: \"Makefile\"; }\n .post .post-content figure.highlight.language-markdown > table::after {\n content: \"Markdown\"; }\n .post .post-content figure.highlight.language-objectivec > table::after {\n content: \"Objective-C\"; }\n .post .post-content figure.highlight.language-php > table::after {\n content: \"PHP\"; }\n .post .post-content figure.highlight.language-perl > table::after {\n content: \"Perl\"; }\n .post .post-content figure.highlight.language-python > table::after {\n content: \"Python\"; }\n .post .post-content figure.highlight.language-ruby > table::after {\n content: \"Ruby\"; }\n .post .post-content figure.highlight.language-sql > table::after {\n content: \"SQL\"; }\n .post .post-content figure.highlight.language-shell > table::after {\n content: \"Shell\"; }\n .post .post-content figure.highlight.language-erlang > table::after {\n content: \"Erlang\"; }\n .post .post-content figure.highlight.language-go > table::after {\n content: \"Go\"; }\n .post .post-content figure.highlight.language-go-html-template > table::after {\n content: \"Go HTML Template\"; }\n .post .post-content figure.highlight.language-groovy > table::after {\n content: \"Groovy\"; }\n .post .post-content figure.highlight.language-haskell > table::after {\n content: \"Haskell\"; }\n .post .post-content figure.highlight.language-kotlin > table::after {\n content: \"Kotlin\"; }\n .post .post-content figure.highlight.language-clojure > table::after {\n content: \"Clojure\"; }\n .post .post-content figure.highlight.language-less > table::after {\n content: \"Less\"; }\n .post .post-content figure.highlight.language-lisp > table::after {\n content: \"Lisp\"; }\n .post .post-content figure.highlight.language-lua > table::after {\n content: \"Lua\"; }\n .post .post-content figure.highlight.language-matlab > table::after {\n content: \"Matlab\"; }\n .post .post-content figure.highlight.language-rust > table::after {\n content: \"Rust\"; }\n .post .post-content figure.highlight.language-scss > table::after {\n content: \"Scss\"; }\n .post .post-content figure.highlight.language-scala > table::after {\n content: \"Scala\"; }\n .post .post-content figure.highlight.language-swift > table::after {\n content: \"Swift\"; }\n .post .post-content figure.highlight.language-typescript > table::after {\n content: \"TypeScript\"; }\n .post .post-content figure.highlight.language-yml > table::after {\n content: \"YAML\"; }\n .post .post-content figure.highlight.language-yaml > table::after {\n content: \"YAML\"; }\n .post .post-content figure.highlight.language-toml > table::after {\n content: \"TOML\"; }\n .post .post-content figure.highlight .code pre {\n margin: 0;\n padding: 30px 10px 10px; }\n .post .post-content figure.highlight .gutter {\n width: 10px;\n color: #cacaca; }\n .post .post-content figure.highlight .gutter pre {\n margin: 0;\n padding: 30px 7px 10px; }\n .post .post-content figure.highlight .line {\n height: 20px; }\n .post .post-content figure.highlight table, .post .post-content figure.highlight tr, .post .post-content figure.highlight td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse; }\n .post .post-content figure.highlight .code .hljs-comment,\n .post .post-content figure.highlight .code .hljs-quote {\n color: #93a1a1; }\n .post .post-content figure.highlight .code .hljs-keyword,\n .post .post-content figure.highlight .code .hljs-selector-tag,\n .post .post-content figure.highlight .code .hljs-addition {\n color: #859900; }\n .post .post-content figure.highlight .code .hljs-number,\n .post .post-content figure.highlight .code .hljs-string,\n .post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,\n .post .post-content figure.highlight .code .hljs-literal,\n .post .post-content figure.highlight .code .hljs-doctag,\n .post .post-content figure.highlight .code .hljs-regexp {\n color: #2aa198; }\n .post .post-content figure.highlight .code .hljs-title,\n .post .post-content figure.highlight .code .hljs-section,\n .post .post-content figure.highlight .code .hljs-name,\n .post .post-content figure.highlight .code .hljs-selector-id,\n .post .post-content figure.highlight .code .hljs-selector-class {\n color: #268bd2; }\n .post .post-content figure.highlight .code .hljs-attribute,\n .post .post-content figure.highlight .code .hljs-attr,\n .post .post-content figure.highlight .code .hljs-variable,\n .post .post-content figure.highlight .code .hljs-template-variable,\n .post .post-content figure.highlight .code .hljs-class .hljs-title,\n .post .post-content figure.highlight .code .hljs-type {\n color: #b58900; }\n .post .post-content figure.highlight .code .hljs-symbol,\n .post .post-content figure.highlight .code .hljs-bullet,\n .post .post-content figure.highlight .code .hljs-subst,\n .post .post-content figure.highlight .code .hljs-meta,\n .post .post-content figure.highlight .code .hljs-meta .hljs-keyword,\n .post .post-content figure.highlight .code .hljs-selector-attr,\n .post .post-content figure.highlight .code .hljs-selector-pseudo,\n .post .post-content figure.highlight .code .hljs-link {\n color: #cb4b16; }\n .post .post-content figure.highlight .code .hljs-built_in,\n .post .post-content figure.highlight .code .hljs-deletion {\n color: #dc322f; }\n .post .post-content figure.highlight .code .hljs-formula {\n background: #eee8d5; }\n .post .post-content figure.highlight .code .hljs-emphasis {\n font-style: italic; }\n .post .post-content figure.highlight .code .hljs-strong {\n font-weight: bold; }\n .post .post-content .highlight > .chroma {\n margin: 1em 0;\n border-radius: 5px;\n overflow-x: auto;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125);\n position: relative;\n background: #f8f5ec;\n /* LineNumbersTable */\n /* LineHighlight */\n /* Keyword */\n /* KeywordConstant */\n /* KeywordDeclaration */\n /* KeywordNamespace */\n /* KeywordPseudo */\n /* KeywordReserved */\n /* KeywordType */\n /* Name */\n /* NameAttribute */\n /* NameBuiltin */\n /* NameBuiltinPseudo */\n /* NameClass */\n /* NameConstant */\n /* NameDecorator */\n /* NameEntity */\n /* NameException */\n /* NameFunction */\n /* NameFunctionMagic */\n /* NameLabel */\n /* NameNamespace */\n /* NameOther */\n /* NameProperty */\n /* NameTag */\n /* NameVariable */\n /* NameVariableClass */\n /* NameVariableGlobal */\n /* NameVariableInstance */\n /* NameVariableMagic */\n /* Literal */\n /* LiteralDate */\n /* LiteralString */\n /* LiteralStringAffix */\n /* LiteralStringBacktick */\n /* LiteralStringChar */\n /* LiteralStringDelimiter */\n /* LiteralStringDoc */\n /* LiteralStringDouble */\n /* LiteralStringEscape */\n /* LiteralStringHeredoc */\n /* LiteralStringInterpol */\n /* LiteralStringOther */\n /* LiteralStringRegex */\n /* LiteralStringSingle */\n /* LiteralStringSymbol */\n /* LiteralNumber */\n /* LiteralNumberBin */\n /* LiteralNumberFloat */\n /* LiteralNumberHex */\n /* LiteralNumberInteger */\n /* LiteralNumberIntegerLong */\n /* LiteralNumberOct */\n /* OperatorWord */\n /* Comment */\n /* CommentHashbang */\n /* CommentMultiline */\n /* CommentSingle */\n /* CommentSpecial */\n /* CommentPreproc */\n /* CommentPreprocFile */\n /* Generic */\n /* GenericDeleted */\n /* GenericEmph */\n /* GenericError */\n /* GenericHeading */\n /* GenericInserted */\n /* GenericOutput */\n /* GenericPrompt */\n /* GenericStrong */\n /* GenericSubheading */\n /* GenericTraceback */ }\n .post .post-content .highlight > .chroma code {\n padding: 0; }\n .post .post-content .highlight > .chroma table {\n position: relative; }\n .post .post-content .highlight > .chroma table::after {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n padding: 2px 7px;\n font-size: 13px;\n font-weight: bold;\n color: #b1b1b1;\n background: #f4efe1;\n content: 'Code'; }\n .post .post-content .highlight > .chroma.language-bash > table::after {\n content: \"Bash\"; }\n .post .post-content .highlight > .chroma.language-c > table::after {\n content: \"C\"; }\n .post .post-content .highlight > .chroma.language-cs > table::after {\n content: \"C#\"; }\n .post .post-content .highlight > .chroma.language-cpp > table::after {\n content: \"C++\"; }\n .post .post-content .highlight > .chroma.language-css > table::after {\n content: \"CSS\"; }\n .post .post-content .highlight > .chroma.language-coffeescript > table::after {\n content: \"CoffeeScript\"; }\n .post .post-content .highlight > .chroma.language-html > table::after {\n content: \"HTML\"; }\n .post .post-content .highlight > .chroma.language-xml > table::after {\n content: \"XML\"; }\n .post .post-content .highlight > .chroma.language-http > table::after {\n content: \"HTTP\"; }\n .post .post-content .highlight > .chroma.language-json > table::after {\n content: \"JSON\"; }\n .post .post-content .highlight > .chroma.language-java > table::after {\n content: \"Java\"; }\n .post .post-content .highlight > .chroma.language-js > table::after {\n content: \"JavaScript\"; }\n .post .post-content .highlight > .chroma.language-javascript > table::after {\n content: \"JavaScript\"; }\n .post .post-content .highlight > .chroma.language-makefile > table::after {\n content: \"Makefile\"; }\n .post .post-content .highlight > .chroma.language-markdown > table::after {\n content: \"Markdown\"; }\n .post .post-content .highlight > .chroma.language-objectivec > table::after {\n content: \"Objective-C\"; }\n .post .post-content .highlight > .chroma.language-php > table::after {\n content: \"PHP\"; }\n .post .post-content .highlight > .chroma.language-perl > table::after {\n content: \"Perl\"; }\n .post .post-content .highlight > .chroma.language-python > table::after {\n content: \"Python\"; }\n .post .post-content .highlight > .chroma.language-ruby > table::after {\n content: \"Ruby\"; }\n .post .post-content .highlight > .chroma.language-sql > table::after {\n content: \"SQL\"; }\n .post .post-content .highlight > .chroma.language-shell > table::after {\n content: \"Shell\"; }\n .post .post-content .highlight > .chroma.language-erlang > table::after {\n content: \"Erlang\"; }\n .post .post-content .highlight > .chroma.language-go > table::after {\n content: \"Go\"; }\n .post .post-content .highlight > .chroma.language-go-html-template > table::after {\n content: \"Go HTML Template\"; }\n .post .post-content .highlight > .chroma.language-groovy > table::after {\n content: \"Groovy\"; }\n .post .post-content .highlight > .chroma.language-haskell > table::after {\n content: \"Haskell\"; }\n .post .post-content .highlight > .chroma.language-kotlin > table::after {\n content: \"Kotlin\"; }\n .post .post-content .highlight > .chroma.language-clojure > table::after {\n content: \"Clojure\"; }\n .post .post-content .highlight > .chroma.language-less > table::after {\n content: \"Less\"; }\n .post .post-content .highlight > .chroma.language-lisp > table::after {\n content: \"Lisp\"; }\n .post .post-content .highlight > .chroma.language-lua > table::after {\n content: \"Lua\"; }\n .post .post-content .highlight > .chroma.language-matlab > table::after {\n content: \"Matlab\"; }\n .post .post-content .highlight > .chroma.language-rust > table::after {\n content: \"Rust\"; }\n .post .post-content .highlight > .chroma.language-scss > table::after {\n content: \"Scss\"; }\n .post .post-content .highlight > .chroma.language-scala > table::after {\n content: \"Scala\"; }\n .post .post-content .highlight > .chroma.language-swift > table::after {\n content: \"Swift\"; }\n .post .post-content .highlight > .chroma.language-typescript > table::after {\n content: \"TypeScript\"; }\n .post .post-content .highlight > .chroma.language-yml > table::after {\n content: \"YAML\"; }\n .post .post-content .highlight > .chroma.language-yaml > table::after {\n content: \"YAML\"; }\n .post .post-content .highlight > .chroma.language-toml > table::after {\n content: \"TOML\"; }\n .post .post-content .highlight > .chroma .lntd {\n line-height: 20px; }\n .post .post-content .highlight > .chroma .lntd:first-child {\n width: 10px; }\n .post .post-content .highlight > .chroma .lntd:first-child pre {\n margin: 0;\n padding: 30px 7px 10px; }\n .post .post-content .highlight > .chroma .lntd:last-child {\n vertical-align: top; }\n .post .post-content .highlight > .chroma .lntd:last-child pre {\n margin: 0;\n padding: 30px 10px 10px; }\n .post .post-content .highlight > .chroma table, .post .post-content .highlight > .chroma tr, .post .post-content .highlight > .chroma td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse; }\n .post .post-content .highlight > .chroma .lnt {\n color: #cacaca; }\n .post .post-content .highlight > .chroma .hl {\n display: block;\n width: 100%;\n background-color: #ffffcc; }\n .post .post-content .highlight > .chroma .k {\n color: #859900; }\n .post .post-content .highlight > .chroma .kc {\n color: #859900;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .kd {\n color: #859900; }\n .post .post-content .highlight > .chroma .kn {\n color: #dc322f;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .kp {\n color: #859900; }\n .post .post-content .highlight > .chroma .kr {\n color: #859900; }\n .post .post-content .highlight > .chroma .kt {\n color: #859900;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .n {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .na {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nb {\n color: #cb4b16; }\n .post .post-content .highlight > .chroma .bp {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nc {\n color: #cb4b16; }\n .post .post-content .highlight > .chroma .no {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nd {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .ni {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .ne {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nf {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .fm {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nl {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nn {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nx {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .py {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .nt {\n color: #268bd2;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .nv {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .vc {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .vg {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .vi {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .vm {\n color: #268bd2; }\n .post .post-content .highlight > .chroma .l {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .ld {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .s {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sa {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sb {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sc {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .dl {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sd {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .s2 {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .se {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sh {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .si {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sx {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .sr {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .s1 {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .ss {\n color: #2aa198; }\n .post .post-content .highlight > .chroma .m {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .mb {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .mf {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .mh {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .mi {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .il {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .mo {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .highlight > .chroma .ow {\n color: #859900; }\n .post .post-content .highlight > .chroma .c {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .ch {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .cm {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .c1 {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .cs {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .cp {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .cpf {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .highlight > .chroma .g {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gd {\n color: #d33682; }\n .post .post-content .highlight > .chroma .ge {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gr {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gh {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gi {\n color: #d33682; }\n .post .post-content .highlight > .chroma .go {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gp {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gs {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gu {\n color: #d33682; }\n .post .post-content .highlight > .chroma .gt {\n color: #d33682; }\n .post .post-content .admonition {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);\n position: relative;\n margin: .9765em 0;\n padding: 0 .75rem;\n border-left: .25rem solid #448aff;\n border-radius: .125rem;\n overflow: auto; }\n .post .post-content .admonition .admonition-title {\n margin: 0 -0.75rem;\n padding: .5rem .75rem .5rem 2.5rem;\n border-bottom: 0.1rem solid rgba(68, 138, 255, 0.1);\n background-color: rgba(68, 138, 255, 0.1);\n font-weight: 700; }\n .post .post-content .admonition .admonition-title:before {\n cursor: auto;\n position: absolute;\n left: .75rem;\n top: .75rem; }\n .post .post-content .admonition.note {\n border-left-color: #448aff; }\n .post .post-content .admonition.note .admonition-title:before {\n color: #448aff;\n content: \"\\e903\"; }\n .post .post-content .admonition.abstract {\n border-left-color: #00b0ff; }\n .post .post-content .admonition.abstract .admonition-title {\n background-color: rgba(0, 176, 255, 0.1); }\n .post .post-content .admonition.abstract .admonition-title:before {\n color: #00b0ff;\n content: \"\\e9bb\"; }\n .post .post-content .admonition.info {\n border-left-color: #00b8d4; }\n .post .post-content .admonition.info .admonition-title {\n background-color: rgba(0, 184, 212, 0.1); }\n .post .post-content .admonition.info .admonition-title:before {\n color: #00b8d4;\n content: \"\\ea0c\"; }\n .post .post-content .admonition.tip {\n border-left-color: #00bfa5; }\n .post .post-content .admonition.tip .admonition-title {\n background-color: rgba(0, 191, 165, 0.1); }\n .post .post-content .admonition.tip .admonition-title:before {\n color: #00bfa5;\n content: \"\\e906\"; }\n .post .post-content .admonition.success {\n border-left-color: #00c853; }\n .post .post-content .admonition.success .admonition-title {\n background-color: rgba(0, 200, 83, 0.1); }\n .post .post-content .admonition.success .admonition-title:before {\n color: #00c853;\n content: \"\\ea10\"; }\n .post .post-content .admonition.question {\n border-left-color: #64dd17; }\n .post .post-content .admonition.question .admonition-title {\n background-color: rgba(100, 221, 23, 0.1); }\n .post .post-content .admonition.question .admonition-title:before {\n color: #64dd17;\n content: \"\\ea09\"; }\n .post .post-content .admonition.warning {\n border-left-color: #ff9100; }\n .post .post-content .admonition.warning .admonition-title {\n background-color: rgba(255, 145, 0, 0.1); }\n .post .post-content .admonition.warning .admonition-title:before {\n color: #ff9100;\n content: \"\\ea07\"; }\n .post .post-content .admonition.failure {\n border-left-color: #ff5252; }\n .post .post-content .admonition.failure .admonition-title {\n background-color: rgba(255, 82, 82, 0.1); }\n .post .post-content .admonition.failure .admonition-title:before {\n color: #ff5252;\n content: \"\\ea0f\"; }\n .post .post-content .admonition.danger {\n border-left-color: #ff1744; }\n .post .post-content .admonition.danger .admonition-title {\n background-color: rgba(255, 23, 68, 0.1); }\n .post .post-content .admonition.danger .admonition-title:before {\n color: #ff1744;\n content: \"\\e905\"; }\n .post .post-content .admonition.bug {\n border-left-color: #f50057; }\n .post .post-content .admonition.bug .admonition-title {\n background-color: rgba(245, 0, 87, 0.1); }\n .post .post-content .admonition.bug .admonition-title:before {\n color: #f50057;\n content: \"\\e907\"; }\n .post .post-content .admonition.example {\n border-left-color: #651fff; }\n .post .post-content .admonition.example .admonition-title {\n background-color: rgba(101, 31, 255, 0.1); }\n .post .post-content .admonition.example .admonition-title:before {\n color: #651fff;\n content: \"\\e9b9\"; }\n .post .post-content .admonition.quote {\n border-left-color: #9e9e9e; }\n .post .post-content .admonition.quote .admonition-title {\n background-color: rgba(158, 158, 158, 0.1); }\n .post .post-content .admonition.quote .admonition-title:before {\n color: #9e9e9e;\n content: \"\\e904\"; }\n .post .post-content .admonition:last-child {\n margin-bottom: .75rem; }\n .post .post-content details.admonition summary {\n display: block;\n outline: none;\n cursor: pointer; }\n .post .post-content details.admonition summary::-webkit-details-marker {\n display: none; }\n .post .post-content details.admonition summary:after {\n position: absolute;\n top: .75rem;\n right: .75rem;\n color: rgba(0, 0, 0, 0.26);\n content: \"\\e908\"; }\n .post .post-content details.admonition[open] > summary:after {\n transform: rotate(180deg); }\n .post .post-content .post-summary {\n margin-bottom: 1em; }\n .post .post-content .read-more .read-more-link {\n color: #c05b4d;\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content .read-more .read-more-link:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content kbd {\n display: inline-block;\n padding: 0.25em;\n background-color: #fafafa;\n border: 1px solid #dbdbdb;\n border-bottom-color: #b5b5b5;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #b5b5b5;\n font-size: 0.8em;\n line-height: 1.25;\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\n color: #4a4a4a; }\n .post .post-content dl dt::after {\n content: ':'; }\n .post .post-content figure.center {\n text-align: center; }\n .post .post-content figure.right {\n text-align: right; }\n .post .post-content figure.left {\n text-align: left; }\n .post .post-content figure figcaption h4 {\n color: #b5b5b5;\n font-size: 0.9rem; }\n .post .post-content hr {\n margin: 1rem 0;\n position: relative;\n border-top: 2px dashed #c05b4d;\n border-bottom: none; }\n .post .post-content .footnote-ref > a {\n font-weight: bold;\n margin-left: 3px; }\n .post .post-content .footnote-ref > a:before {\n content: \"[\"; }\n .post .post-content .footnote-ref > a:after {\n content: \"]\"; }\n .post .post-content .task-list {\n list-style: none;\n padding-left: 1.5rem; }\n .post .post-content .align-center {\n text-align: center; }\n .post .post-content .align-right {\n text-align: right; }\n .post .post-content .align-left {\n text-align: left; }\n .post .post-content .MJXc-display {\n overflow-x: auto;\n overflow-y: hidden; }\n .post .post-copyright {\n margin-top: 20px;\n padding-top: 10px;\n border-top: 1px dashed #e6e6e6; }\n .post .post-copyright .copyright-item {\n margin: 5px 0; }\n .post .post-copyright .copyright-item a {\n color: #c05b4d;\n word-wrap: break-word; }\n .post .post-copyright .copyright-item a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-copyright .copyright-item .item-title {\n display: inline-block;\n min-width: 5rem;\n margin-right: .5rem;\n text-align: right; }\n .post .post-copyright .copyright-item .item-title:after {\n content: \" :\"; }\n .post .post-reward {\n margin-top: 20px;\n padding-top: 10px;\n text-align: center;\n border-top: 1px dashed #e6e6e6; }\n .post .post-reward .reward-button {\n margin: 15px 0;\n padding: 3px 7px;\n display: inline-block;\n color: #c05b4d;\n border: 1px solid #c05b4d;\n border-radius: 5px;\n cursor: pointer; }\n .post .post-reward .reward-button:hover {\n color: #fefefe;\n background-color: #c05b4d;\n transition: 0.5s; }\n .post .post-reward #reward:checked ~ .qr-code {\n display: block; }\n .post .post-reward #reward:checked ~ .reward-button {\n display: none; }\n .post .post-reward .qr-code {\n display: none; }\n .post .post-reward .qr-code .qr-code-image {\n display: inline-block;\n min-width: 200px;\n width: 40%;\n margin-top: 15px; }\n .post .post-reward .qr-code .qr-code-image span {\n display: inline-block;\n width: 100%;\n margin: 8px 0; }\n .post .post-reward .qr-code .image {\n width: 200px;\n height: 200px; }\n .post .post-footer {\n margin-top: 20px;\n border-top: 1px solid #e6e6e6;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-footer .post-tags {\n padding: 15px 0; }\n .post .post-footer .post-tags a {\n margin-right: 5px;\n color: #c05b4d;\n word-break: break-all; }\n .post .post-footer .post-tags a::before {\n content: '#'; }\n .post .post-footer .post-nav {\n margin: 1em 0; }\n .post .post-footer .post-nav:before, .post .post-footer .post-nav:after {\n content: \" \";\n display: table; }\n .post .post-footer .post-nav:after {\n clear: both; }\n .post .post-footer .post-nav .prev,\n .post .post-footer .post-nav .next {\n font-weight: 600;\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .post .post-footer .post-nav .prev {\n float: left; }\n .post .post-footer .post-nav .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .post .post-footer .post-nav .next {\n float: right; }\n .post .post-footer .post-nav .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n .post .post-footer .post-nav .nav-mobile {\n display: none; }\n @media screen and (max-width: 800px) {\n .post .post-footer .post-nav .nav-default {\n display: none; }\n .post .post-footer .post-nav .nav-mobile {\n display: inline; } }\n .post .post-outdated .hint {\n position: relative;\n margin-top: 20px;\n margin-bottom: 20px;\n padding: 5px 10px;\n border-left: 4px solid #42acf3;\n background-color: #eff5ff;\n border-color: #42acf3; }\n .post .post-outdated .warn {\n position: relative;\n margin-top: 20px;\n margin-bottom: 20px;\n padding: 5px 10px;\n border-left: 4px solid #f9cf63;\n background-color: #ffffc0;\n border-color: #f9cf63; }\n\n.pagination {\n margin: 2em 0; }\n .pagination:before, .pagination:after {\n content: \" \";\n display: table; }\n .pagination:after {\n clear: both; }\n .pagination .prev,\n .pagination .next {\n font-weight: 600;\n font-size: 20px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .pagination .prev {\n float: left; }\n .pagination .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .pagination .next {\n float: right; }\n .pagination .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n\n.footer {\n margin-top: 2em; }\n .footer .social-links {\n text-align: center; }\n .footer .social-links .iconfont {\n font-size: 30px; }\n .footer .social-links .iconfont + .iconfont {\n margin-left: 10px; }\n .footer .social-links .iconfont:hover {\n color: #c05b4d; }\n .footer .copyright {\n margin: 10px 0;\n color: #8a8a8a;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .footer .copyright .hexo-link,\n .footer .copyright .theme-link {\n color: #c05b4d; }\n .footer .copyright .copyright-year {\n display: block; }\n .footer .copyright .copyright-year .heart {\n font-size: 14px; }\n\n.archive {\n margin: 2em 0px;\n max-width: 550px; }\n .archive .archive-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .archive-title.tag, .archive .archive-title.category {\n margin: 15px 0; }\n .archive .archive-title .archive-name {\n margin: 0;\n display: inline-block;\n font-weight: 400;\n font-size: 30px;\n line-height: 32px; }\n .archive .archive-title .archive-post-counter {\n color: #8a8a8a; }\n .archive .collection-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .collection-title .archive-year {\n margin: 15px 0;\n font-weight: 400;\n font-size: 28px;\n line-height: 30px; }\n .archive .archive-post {\n padding: 3px 20px;\n border-left: 1px solid #cacaca; }\n .archive .archive-post .archive-post-time {\n margin-right: 10px;\n color: #8a8a8a; }\n .archive .archive-post .archive-post-title .archive-post-link {\n color: #c05b4d; }\n .archive .archive-post::first-child {\n margin-top: 10px; }\n .archive .archive-post:hover {\n border-left: 3px solid #c05b4d;\n transition: 0.2s ease-out;\n transform: translateX(4px); }\n .archive .archive-post:hover .archive-post-time {\n color: #717171; }\n .archive .archive-post:hover .archive-post-title .archive-post-link {\n color: #a14639; }\n\n@media screen and (max-width: 800px) {\n .archive {\n margin-left: auto;\n margin-right: auto; }\n .archive .archive-title .archive-name {\n font-size: 26px; }\n .archive .collection-title .archive-year {\n margin: 10px 0;\n font-size: 24px; }\n .archive .archive-post {\n padding: 5px 10px; }\n .archive .archive-post .archive-post-time {\n font-size: 13px;\n display: block; } }\n\n.terms {\n margin: 2em 0 3em;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .terms .terms-title {\n display: inline-block;\n font-size: 18px;\n color: #c05b4d;\n border-bottom: 2px solid #c05b4d; }\n .terms .terms-tags {\n margin: 10px 0; }\n .terms .terms-tags .terms-link {\n display: inline-block;\n position: relative;\n margin: 5px 10px;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out; }\n .terms .terms-tags .terms-link .terms-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: #c05b4d;\n font-size: 12px; }\n .terms .terms-tags .terms-link:active, .terms .terms-tags .terms-link:focus, .terms .terms-tags .terms-link:hover {\n color: #c05b4d;\n transform: scale(1.1); }\n\n.slideout-menu {\n position: fixed;\n top: 0;\n left: 0px;\n bottom: 0;\n width: 180px;\n min-height: 100vh;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n z-index: 0;\n display: none; }\n\n.slideout-panel {\n position: relative;\n z-index: 1;\n background-color: #fefefe;\n min-height: 100vh; }\n\n.slideout-open,\n.slideout-open body,\n.slideout-open .slideout-panel {\n overflow: hidden; }\n\n.slideout-open .slideout-menu {\n display: block; }\n\n.mobile-navbar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n background: #fefefe;\n box-shadow: 0px 2px 2px #cacaca;\n text-align: center;\n transition: transform 300ms ease;\n z-index: 99; }\n .mobile-navbar.fixed-open {\n transform: translate3d(180px, 0px, 0px); }\n .mobile-navbar .mobile-header-logo {\n display: inline-block;\n margin-right: 50px; }\n .mobile-navbar .mobile-header-logo .logo {\n font-size: 22px;\n line-height: 50px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n .mobile-navbar .mobile-navbar-icon {\n color: #c05b4d;\n height: 50px;\n width: 50px;\n font-size: 24px;\n text-align: center;\n float: left;\n position: relative;\n transition: background 0.5s; }\n\n@keyframes clickfirst {\n 0% {\n transform: translateY(6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(45deg); } }\n\n@keyframes clickmid {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@keyframes clicklast {\n 0% {\n transform: translateY(-6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(-45deg); } }\n\n@keyframes outfirst {\n 0% {\n transform: translateY(0) rotate(-45deg); }\n 100% {\n transform: translateY(-6px) rotate(0deg); } }\n\n@keyframes outmid {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes outlast {\n 0% {\n transform: translateY(0) rotate(45deg); }\n 100% {\n transform: translateY(6px) rotate(0deg); } }\n .mobile-navbar .mobile-navbar-icon span {\n position: absolute;\n /* fallback for browsers which still doesn't support for `calc()` */\n left: 15px;\n top: 25px;\n left: calc((100% - 20px) / 2);\n top: calc((100% - 1px) / 2);\n width: 20px;\n height: 1px;\n background-color: #c05b4d; }\n .mobile-navbar .mobile-navbar-icon span:nth-child(1) {\n transform: translateY(6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon span:nth-child(3) {\n transform: translateY(-6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clickfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: clickmid; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clicklast; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: outmid; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outlast; }\n\n.mobile-menu {\n background-color: rgba(248, 245, 236, 0.5); }\n .mobile-menu .mobile-menu-list {\n position: relative;\n list-style: none;\n margin-top: 50px;\n padding: 0;\n border-top: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list .mobile-menu-item {\n padding: 10px 30px;\n border-bottom: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list a {\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .mobile-menu .mobile-menu-list a:hover {\n color: #c05b4d; }\n\n@media screen and (max-width: 800px) {\n .mobile-navbar {\n display: block; } }\n\n.back-to-top {\n display: none;\n position: fixed;\n right: 20px;\n bottom: 20px;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n z-index: 10; }\n .back-to-top:hover {\n transform: translateY(-5px); }\n\n@media screen and (max-width: 800px) {\n .back-to-top {\n display: none !important; } }\n\n.not-found {\n text-align: center; }\n .not-found .error-emoji {\n color: #363636;\n font-size: 3rem; }\n .not-found .error-text {\n color: #797979;\n font-size: 1.25rem; }\n .not-found .error-link {\n margin-top: 2rem; }\n .not-found .error-link a {\n color: #c05b4d; }\n","@import '_common/normalize';\r\n\r\nhtml {\r\n font-size: $global-font-size;\r\n box-sizing: border-box;\r\n}\r\n\r\nbody {\r\n padding: 0;\r\n margin: 0;\r\n font-family: $global-font-family;\r\n font-weight: normal;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n line-height: $global-lineheight;\r\n color: $global-font-color;\r\n background: $global-background;\r\n scroll-behavior: smooth;\r\n border-top: 3px solid $theme-color;\r\n}\r\n\r\n@include max-screen() {\r\n body {\r\n border-top: 0;\r\n }\r\n}\r\n\r\n::selection {\r\n background: $theme-color;\r\n color: #fff; \r\n}\r\n\r\n// ::-webkit-scrollbar {\r\n// width: 8px;\r\n// height: 6px; \r\n// }\r\n\r\n// ::-webkit-scrollbar-thumb {\r\n// background: lighten($theme-color, 10%);\r\n// border-radius: 5px;\r\n// }\r\n\r\n// ::-webkit-scrollbar-track {\r\n// background: rgba(211, 211, 211, 0.4);\r\n// border-radius: 5px;\r\n// }\r\n\r\nimg {\r\n max-width: 100%;\r\n height: auto;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\na {\r\n color: $global-font-color;\r\n text-decoration: none;\r\n}\r\n\r\n@each $header, $size in $global-headings {\r\n #{$header} {\r\n font-size: $size;\r\n font-family: $global-serif-font-family;\r\n }\r\n}\r\n\r\n.container {\r\n margin: 0 auto;\r\n width: $global-body-width;\r\n}\r\n\r\n@include max-screen() {\r\n .container {\r\n width: 100%;\r\n box-shadow: -1px -5px 5px $gray;\r\n }\r\n}\r\n\r\n.content-wrapper {\r\n padding: $global-container-padding;\r\n}\r\n\r\n// make video fluid:\r\n// https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php\r\n// class video-container is the wrapper used by hexo youtube tag plugin\r\n.video-container {\r\n\tposition: relative;\r\n\tpadding-bottom: 56.25%; /* 16:9 */\r\n\tpadding-top: 25px;\r\n\theight: 0;\r\n}\r\n.video-container iframe {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}","@mixin clearfix() {\r\n &:before,\r\n &:after {\r\n content: \" \";\r\n display: table;\r\n }\r\n \r\n &:after {\r\n clear: both;\r\n }\r\n}\r\n\r\n@mixin min-screen($min-width: $global-body-width) {\r\n @media screen and (min-width: $min-width) {\r\n @content;\r\n }\r\n}\r\n\r\n@mixin max-screen($max-width: $global-body-width) {\r\n @media screen and (max-width: $max-width) {\r\n @content;\r\n }\r\n}\r\n","// ==============================\r\n// Iconfont\r\n// ==============================\r\n\r\n@font-face {\r\n font-family: 'iconfont';\r\n\r\n src: url('../fonts/iconfont/iconfont.eot');\r\n src: url('../fonts/iconfont/iconfont.eot#iefix') format('embedded-opentype'), // not '?#iefix', because webpack will add '?hash=[hash]'\r\n url('../fonts/iconfont/iconfont.woff') format('woff'),\r\n url('../fonts/iconfont/iconfont.ttf') format('truetype'),\r\n url('../fonts/iconfont/iconfont.svg#iconfont') format('svg');\r\n}\r\n\r\n%base-iconfont {\r\n font-family: \"iconfont\" !important;\r\n speak: none;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-variant: normal;\r\n text-transform: none;\r\n line-height: 1;\r\n\r\n -webkit-text-stroke-width: 0.2px;\r\n cursor: pointer;\r\n\r\n /* Enable Ligatures ================ */\r\n letter-spacing: 0;\r\n font-feature-settings: \"liga\";\r\n font-variant-ligatures: discretionary-ligatures;\r\n\r\n /* Better Font Rendering =========== */\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.iconfont {\r\n @extend %base-iconfont;\r\n}\r\n\r\n/* Social Icon */\r\n.icon-bilibili:before {\r\n content: \"\\e900\";\r\n font-size: .9em;\r\n position: relative;\r\n top: -4px;\r\n}\r\n.icon-instagram:before {\r\n font-size: .95em;\r\n content: \"\\e611\";\r\n position: relative;\r\n top: 1px;\r\n}\r\n.icon-douban:before {\r\n content: \"\\e610\";\r\n position: relative;\r\n top: 2px;\r\n}\r\n.icon-tumblr:before {\r\n content: \"\\e69f\";\r\n font-size: .85em;\r\n position: relative;\r\n top: -2px;\r\n}\r\n.icon-linkedin:before {\r\n content: \"\\e60d\";\r\n position: relative;\r\n top: -2px;\r\n}\r\n.icon-twitter:before {\r\n content: \"\\e600\";\r\n}\r\n.icon-weibo:before {\r\n content: \"\\e602\";\r\n position: relative;\r\n top: 2px;\r\n}\r\n.icon-stack-overflow:before {\r\n content: \"\\e902\";\r\n font-size: .85em;\r\n position: relative;\r\n top: -4px;\r\n}\r\n.icon-email:before {\r\n content: \"\\e605\";\r\n position: relative;\r\n top: -2px;\r\n}\r\n.icon-facebook:before {\r\n content: \"\\e601\";\r\n font-size: .95em;\r\n position: relative;\r\n top: -2px;\r\n}\r\n.icon-gitlab:before {\r\n content: \"\\e901\";\r\n font-size: .9em;\r\n position: relative;\r\n top: -4px;\r\n}\r\n.icon-github:before {\r\n content: \"\\e606\";\r\n position: relative;\r\n top: -1px;\r\n}\r\n.icon-rss:before {\r\n content: \"\\e604\";\r\n}\r\n.icon-google:before {\r\n content: \"\\e609\";\r\n position: relative;\r\n top: 2px;\r\n}\r\n.icon-zhihu:before {\r\n content: \"\\e607\";\r\n font-size: .9em;\r\n}\r\n.icon-pocket:before {\r\n content: \"\\e856\";\r\n position: relative;\r\n top: 2px;\r\n}\r\n\r\n/* Generic Icon */\r\n.icon-heart:before {\r\n content: \"\\e608\";\r\n}\r\n.icon-right:before {\r\n content: \"\\e60a\";\r\n}\r\n.icon-left:before {\r\n content: \"\\e60b\";\r\n}\r\n.icon-up:before {\r\n content: \"\\e60c\";\r\n}\r\n.icon-close:before {\r\n content: \"\\e60f\";\r\n}\r\n.icon-link:before {\r\n content: \"\\e909\";\r\n}\r\n\r\n/* Admonition Icon */\r\n/*\r\n.icon-chevron-down:before {\r\n content: \"\\e908\";\r\n}\r\n.icon-format-quote:before {\r\n content: \"\\e904\";\r\n}\r\n.icon-pencil:before {\r\n content: \"\\e903\";\r\n}\r\n.icon-list-numbered:before {\r\n content: \"\\e9b9\";\r\n}\r\n.icon-list:before {\r\n content: \"\\e9bb\";\r\n}\r\n.icon-warning:before {\r\n content: \"\\ea07\";\r\n}\r\n.icon-question:before {\r\n content: \"\\ea09\";\r\n}\r\n.icon-info:before {\r\n content: \"\\ea0c\";\r\n}\r\n.icon-cross:before {\r\n content: \"\\ea0f\";\r\n}\r\n.icon-checkmark:before {\r\n content: \"\\ea10\";\r\n}\r\n.icon-fire:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-danger:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-flame:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-hot:before {\r\n content: \"\\e905\";\r\n}\r\n.icon-bulb:before {\r\n content: \"\\e906\";\r\n}\r\n*/\r\n","// ==============================\r\n// Header\r\n// ==============================\r\n\r\n.header {\r\n @include clearfix; \r\n padding: $header-padding;\r\n\r\n @import '_header/logo';\r\n @import '_header/menu';\r\n}\r\n\r\n\r\n@include max-screen() {\r\n .header {\r\n padding: 50px 0 0;\r\n text-align: center;\r\n }\r\n}\r\n","// ==============================\r\n// Logo\r\n// =============================\r\n\r\n.logo-wrapper {\r\n float: left;\r\n\r\n .logo {\r\n font-size: $logo-font-size;\r\n font-family: $logo-font-family;\r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .logo-wrapper {\r\n display: none;\r\n }\r\n}\r\n","// ==============================\r\n// Menu\r\n// =============================\r\n\r\n.site-navbar {\r\n float: right;\r\n\r\n .menu {\r\n display: inline-block;\r\n position: relative;\r\n padding-left: 0;\r\n padding-right: 25px;\r\n font-family: $global-serif-font-family;\r\n\r\n .menu-item {\r\n display: inline-block;\r\n\r\n & + .menu-item {\r\n margin-left: $menu-item-margin-left;;\r\n }\r\n\r\n @include underline-from-center;\r\n }\r\n\r\n .menu-item-link {\r\n font-size: $menu-link-font-size;\r\n }\r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .site-navbar {\r\n display: none;\r\n }\r\n}\r\n","@mixin underline-from-center() {\r\n display: inline-block;\r\n vertical-align: middle;\r\n transform: translateZ(0);\r\n backface-visibility: hidden;\r\n box-shadow: 0 0 1px transparent;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n z-index: -1;\r\n height: 2px;\r\n bottom: 0;\r\n left: 51%;\r\n right: 51%;\r\n background: $theme-color;\r\n transition-duration: 0.2s;\r\n transition-property: right, left;\r\n transition-timing-function: ease-out;\r\n }\r\n\r\n &.active,\r\n &:active,\r\n &:focus,\r\n &:hover {\r\n &:before {\r\n right: 0;\r\n left: 0;\r\n }\r\n }\r\n}\r\n\r\n@mixin mobile-menu-icon() {\r\n @keyframes clickfirst {\r\n 0% {\r\n transform: translateY(6px) rotate(0deg);\r\n \r\n }\r\n\r\n 100% {\r\n transform: translateY(0) rotate(45deg);\r\n }\r\n }\t\r\n\r\n @keyframes clickmid {\r\n 0% {\r\n opacity: 1;\r\n }\r\n\r\n 100% {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n @keyframes clicklast {\r\n 0% {\r\n transform: translateY(-6px) rotate(0deg);\r\n }\r\n\r\n 100% {\r\n transform: translateY(0) rotate(-45deg);\r\n }\r\n }\r\n \r\n @keyframes outfirst {\r\n 0% {\r\n transform: translateY(0) rotate(-45deg);\r\n }\r\n\r\n 100% {\r\n transform: translateY(-6px) rotate(0deg);\r\n }\r\n }\t\r\n\r\n @keyframes outmid {\r\n 0% {\r\n opacity: 0;\r\n }\r\n\r\n 100% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n @keyframes outlast {\r\n 0% {\r\n transform: translateY(0) rotate(45deg);\r\n }\r\n\r\n 100% {\r\n transform: translateY(6px) rotate(0deg);\r\n }\r\n }\r\n\r\n span {\r\n position: absolute;\r\n /* fallback for browsers which still doesn't support for `calc()` */\r\n left: 15px;\r\n top: 25px;\r\n left: calc((100% - 20px) / 2);\r\n top: calc((100% - 1px) / 2);\r\n width: 20px;\r\n height: 1px;\r\n background-color: $theme-color;\r\n \r\n &:nth-child(1) {\r\n transform: translateY(6px) rotate(0deg);\r\n }\r\n\r\n &:nth-child(3) {\r\n transform: translateY(-6px) rotate(0deg);\r\n }\r\n }\r\n\r\n &.icon-click {\r\n span:nth-child(1) {\r\n animation-duration: 0.5s;\r\n animation-fill-mode: both;\r\n animation-name: clickfirst;\r\n }\r\n\r\n span:nth-child(2) {\r\n animation-duration: 0.2s;\r\n animation-fill-mode: both;\r\n animation-name: clickmid;\r\n }\r\n\r\n span:nth-child(3) {\r\n animation-duration: 0.5s;\r\n animation-fill-mode: both;\r\n animation-name: clicklast;\r\n }\r\n }\r\n\r\n &.icon-out {\r\n span:nth-child(1) {\r\n animation-duration: 0.5s;\r\n animation-fill-mode: both;\r\n animation-name: outfirst;\r\n }\r\n\r\n span:nth-child(2) {\r\n animation-duration: 0.2s;\r\n animation-fill-mode: both;\r\n animation-name: outmid;\r\n }\r\n\r\n span:nth-child(3) {\r\n animation-duration: 0.5s;\r\n animation-fill-mode: both;\r\n animation-name: outlast;\r\n }\r\n }\r\n}","// ==============================\r\n// Post\r\n// ==============================\r\n\r\n.posts {\r\n margin-bottom: $post-list-margin-bottom;\r\n border-bottom: $post-border;\r\n}\r\n\r\n.post {\r\n padding: $post-padding;\r\n\r\n & + .post {\r\n border-top: $post-border;\r\n }\r\n\r\n @import '_post/header';\r\n @import '_post/toc';\r\n @import '_post/content';\r\n @import '_post/copyright';\r\n @import '_post/reward';\r\n @import '_post/footer';\r\n @import '_post/outdated';\r\n}\r\n",".post-header {\r\n margin-bottom: 20px;\r\n\r\n .post-title {\r\n margin: 0;\r\n font-size: $post-title-font-size;\r\n font-weight: $post-title-font-weight;\r\n font-family: $global-serif-font-family;\r\n }\r\n\r\n .post-link {\r\n @include underline-from-center;\r\n }\r\n\r\n .post-meta {\r\n font-size: 14px;\r\n color: $post-meta-font-color;\r\n\r\n .post-time {\r\n font-size: 15px;\r\n }\r\n\r\n .post-category {\r\n display: inline;\r\n\r\n a {\r\n color: inherit;\r\n\r\n &::before {\r\n content: '·';\r\n }\r\n\r\n &:hover {\r\n color: $theme-color;\r\n }\r\n }\r\n }\r\n\r\n .more-meta {\r\n &::before {\r\n content: '·';\r\n }\r\n }\r\n\r\n }\r\n}\r\n",".post-toc {\r\n position: absolute;\r\n width: $post-toc-width;\r\n margin-left: $post-toc-margin-left;\r\n padding: 10px;\r\n font-family: $global-serif-font-family;\r\n border-radius: 5px;\r\n background: $post-toc-backgroud;\r\n box-shadow: 1px 1px 2px rgba(0,0,0,0.125);\r\n word-wrap: break-word;\r\n box-sizing: border-box;\r\n\r\n .post-toc-title {\r\n margin: 0 10px;\r\n font-size: $post-toc-title-size;\r\n font-weight: 400;\r\n text-transform: uppercase;\r\n }\r\n\r\n .post-toc-content {\r\n font-size: $post-toc-content;\r\n\r\n &.always-active ul {\r\n display: block;\r\n }\r\n\r\n >nav>ul {\r\n margin: 10px 0;\r\n }\r\n\r\n ul {\r\n padding-left: 20px;\r\n list-style: $post-toc-list-style;\r\n\r\n ul {\r\n padding-left: 15px;\r\n display: none;\r\n }\r\n\r\n .has-active > ul {\r\n display: block;\r\n }\r\n }\r\n\r\n .toc-link.active {\r\n color: $theme-color;\r\n }\r\n }\r\n}\r\n\r\n@include max-screen($toc-max-sreen-width) {\r\n .post-toc {\r\n display: none;\r\n }\r\n}\r\n","// ==============================\r\n// Post content\r\n// ==============================\r\n\r\n.post-content {\r\n word-wrap: break-word;\r\n\r\n @for $i from 1 through 6 {\r\n h#{$i} {\r\n font-weight: 400;\r\n font-family: $global-serif-font-family;\r\n\r\n .anchor {\r\n float: left;\r\n line-height: 1;\r\n margin-left: -20px;\r\n padding-right: 4px;\r\n\r\n &:hover {\r\n border-bottom: initial;\r\n }\r\n\r\n .icon-link {\r\n visibility: hidden;\r\n font-size: 16px;\r\n\r\n &:before {\r\n vertical-align: middle;\r\n }\r\n }\r\n }\r\n\r\n &:hover {\r\n .icon-link {\r\n visibility: visible;\r\n }\r\n }\r\n }\r\n }\r\n\r\n a {\r\n color: $theme-color;\r\n word-break: break-all;\r\n\r\n &:hover {\r\n border-bottom: $content-link-border;\r\n }\r\n\r\n &.fancybox {\r\n border: 0;\r\n }\r\n }\r\n\r\n blockquote {\r\n margin: 2em 0;\r\n padding: 10px 20px;\r\n position: relative;\r\n color: rgba(#34495e, 0.8);\r\n background-color: $content-blockquote-backgroud;\r\n border-left: $content-blockquote-border-left;\r\n box-shadow: 1px 1px 2px rgba(0,0,0,0.125);\r\n\r\n p {\r\n margin: 0;\r\n }\r\n }\r\n\r\n img {\r\n display: inline-block;\r\n max-width: 100%;\r\n }\r\n\r\n .table-wrapper {\r\n overflow-x: auto;\r\n\r\n > table {\r\n max-width: 100%;\r\n margin: 10px 0;\r\n border-spacing: 0;\r\n box-shadow: 2px 2px 3px rgba(0,0,0,.125);\r\n\r\n thead {\r\n background: $deputy-color;\r\n }\r\n\r\n th, td {\r\n padding: 5px 15px;\r\n border: 1px double $content-table-border-color;\r\n }\r\n\r\n tr:hover {\r\n background-color: $deputy-color;\r\n }\r\n }\r\n }\r\n\r\n @import 'code';\r\n @import 'admonition';\r\n\r\n .post-summary {\r\n margin-bottom: 1em;\r\n }\r\n\r\n .read-more {\r\n .read-more-link {\r\n color: $theme-color;\r\n font-size: 1.1em;\r\n font-family: $global-serif-font-family;\r\n \r\n &:hover {\r\n border-bottom: $post-readMore-border-bottom;\r\n }\r\n }\r\n }\r\n\r\n kbd {\r\n display: inline-block;\r\n padding: 0.25em;\r\n background-color: #fafafa;\r\n border: 1px solid #dbdbdb;\r\n border-bottom-color: #b5b5b5;\r\n border-radius: 3px;\r\n box-shadow: inset 0 -1px 0 #b5b5b5;\r\n font-size: 0.8em;\r\n line-height: 1.25;\r\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\r\n color: #4a4a4a;\r\n }\r\n\r\n dl dt::after {\r\n content: ':';\r\n }\r\n\r\n figure {\r\n &.center {\r\n text-align: center;\r\n }\r\n\r\n &.right {\r\n text-align: right;\r\n }\r\n\r\n &.left {\r\n text-align: left;\r\n }\r\n\r\n figcaption h4 {\r\n color: #b5b5b5;\r\n font-size: 0.9rem;\r\n }\r\n }\r\n\r\n hr {\r\n margin: 1rem 0;\r\n position: relative;\r\n border-top: 2px dashed $theme-color;\r\n border-bottom: none;\r\n }\r\n\r\n .footnote-ref {\r\n > a {\r\n font-weight: bold;\r\n margin-left: 3px;\r\n\r\n &:before {\r\n content: \"[\";\r\n }\r\n\r\n &:after {\r\n content: \"]\";\r\n }\r\n }\r\n }\r\n\r\n .task-list {\r\n list-style: none;\r\n padding-left: 1.5rem;\r\n }\r\n\r\n .align-center {\r\n text-align: center;\r\n }\r\n\r\n .align-right {\r\n text-align: right;\r\n }\r\n\r\n .align-left {\r\n text-align: left;\r\n }\r\n\r\n .MJXc-display {\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n }\r\n}\r\n","code, pre {\r\n padding: 7px;\r\n font-size: $code-font-size;\r\n font-family: $code-font-family;\r\n background: $code-background;\r\n}\r\n\r\ncode {\r\n padding: 3px 5px;\r\n border-radius: 4px;\r\n color: $code-color;\r\n}\r\n\r\n// highlight.js\r\nfigure.highlight {\r\n margin: 1em 0;\r\n border-radius: 5px;\r\n overflow-x: auto;\r\n box-shadow: 1px 1px 2px rgba(0,0,0,0.125);\r\n position: relative;\r\n\r\n table {\r\n position: relative;\r\n\r\n &::after {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n padding: 2px 7px;\r\n font-size: $code-font-size;\r\n font-weight: bold;\r\n color: darken($gray, 10%);\r\n background: darken($code-background, 3%);\r\n content: 'Code';\r\n }\r\n }\r\n\r\n @each $sign, $text in $code-type-list {\r\n &.#{$sign} > table::after {\r\n content: $text;\r\n }\r\n }\r\n\r\n .code {\r\n pre {\r\n margin: 0;\r\n padding: 30px 10px 10px;\r\n }\r\n }\r\n\r\n .gutter {\r\n width: 10px;\r\n color: $gray;\r\n\r\n pre {\r\n margin: 0;\r\n padding: 30px 7px 10px;\r\n }\r\n }\r\n\r\n .line {\r\n // Fix code block null line height and\r\n // Synchronous gutter and code line highly.\r\n height: round($code-font-size * 1.5);\r\n }\r\n\r\n table, tr, td {\r\n margin: 0;\r\n padding: 0;\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n .code {\r\n .hljs-comment,\r\n .hljs-quote {\r\n color: map-get($code-highlight-color, comment);\r\n }\r\n\r\n .hljs-keyword,\r\n .hljs-selector-tag,\r\n .hljs-addition {\r\n color: map-get($code-highlight-color, keyword);\r\n }\r\n\r\n .hljs-number,\r\n .hljs-string,\r\n .hljs-meta .hljs-meta-string,\r\n .hljs-literal,\r\n .hljs-doctag,\r\n .hljs-regexp {\r\n color: map-get($code-highlight-color, number);\r\n }\r\n\r\n .hljs-title,\r\n .hljs-section,\r\n .hljs-name,\r\n .hljs-selector-id,\r\n .hljs-selector-class {\r\n color: map-get($code-highlight-color, title);\r\n }\r\n\r\n .hljs-attribute,\r\n .hljs-attr,\r\n .hljs-variable,\r\n .hljs-template-variable,\r\n .hljs-class .hljs-title,\r\n .hljs-type {\r\n color: map-get($code-highlight-color, attribute);\r\n }\r\n\r\n .hljs-symbol,\r\n .hljs-bullet,\r\n .hljs-subst,\r\n .hljs-meta,\r\n .hljs-meta .hljs-keyword,\r\n .hljs-selector-attr,\r\n .hljs-selector-pseudo,\r\n .hljs-link {\r\n color: map-get($code-highlight-color, symbol);\r\n }\r\n\r\n .hljs-built_in,\r\n .hljs-deletion {\r\n color: map-get($code-highlight-color, built_in);\r\n }\r\n\r\n .hljs-formula {\r\n background: map-get($code-highlight-color, formula);\r\n }\r\n \r\n .hljs-emphasis {\r\n font-style: italic;\r\n }\r\n \r\n .hljs-strong {\r\n font-weight: bold;\r\n }\r\n }\r\n}\r\n\r\n// chroma\r\n.highlight > .chroma {\r\n margin: 1em 0;\r\n border-radius: 5px;\r\n overflow-x: auto;\r\n box-shadow: 1px 1px 2px rgba(0,0,0,0.125);\r\n position: relative;\r\n background: $code-background;\r\n\r\n code {\r\n padding: 0;\r\n }\r\n\r\n table {\r\n position: relative;\r\n\r\n &::after {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n padding: 2px 7px;\r\n font-size: $code-font-size;\r\n font-weight: bold;\r\n color: darken($gray, 10%);\r\n background: darken($code-background, 3%);\r\n content: 'Code';\r\n }\r\n }\r\n\r\n @each $sign, $text in $code-type-list {\r\n &.#{$sign} > table::after {\r\n content: $text;\r\n }\r\n }\r\n\r\n .lntd {\r\n // Fix code block null line height and\r\n // Synchronous gutter and code line highly.\r\n line-height: round($code-font-size * 1.5);\r\n\r\n &:first-child {\r\n width: 10px;\r\n\r\n pre {\r\n margin: 0;\r\n padding: 30px 7px 10px;\r\n }\r\n }\r\n\r\n &:last-child {\r\n vertical-align: top;\r\n\r\n pre {\r\n margin: 0;\r\n padding: 30px 10px 10px;\r\n }\r\n }\r\n }\r\n\r\n table, tr, td {\r\n margin: 0;\r\n padding: 0;\r\n width: 100%;\r\n border-collapse: collapse;\r\n }\r\n\r\n /* LineNumbersTable */ .lnt { color: $gray; }\r\n /* LineHighlight */ .hl { display: block; width: 100%; background-color: #ffffcc }\r\n\r\n /* Keyword */ .k { color: #859900 }\r\n /* KeywordConstant */ .kc { color: #859900; font-weight: bold }\r\n /* KeywordDeclaration */ .kd { color: #859900 }\r\n /* KeywordNamespace */ .kn { color: #dc322f; font-weight: bold }\r\n /* KeywordPseudo */ .kp { color: #859900 }\r\n /* KeywordReserved */ .kr { color: #859900 }\r\n /* KeywordType */ .kt { color: #859900; font-weight: bold }\r\n /* Name */ .n { color: #268bd2 }\r\n /* NameAttribute */ .na { color: #268bd2 }\r\n /* NameBuiltin */ .nb { color: #cb4b16 }\r\n /* NameBuiltinPseudo */ .bp { color: #268bd2 }\r\n /* NameClass */ .nc { color: #cb4b16 }\r\n /* NameConstant */ .no { color: #268bd2 }\r\n /* NameDecorator */ .nd { color: #268bd2 }\r\n /* NameEntity */ .ni { color: #268bd2 }\r\n /* NameException */ .ne { color: #268bd2 }\r\n /* NameFunction */ .nf { color: #268bd2 }\r\n /* NameFunctionMagic */ .fm { color: #268bd2 }\r\n /* NameLabel */ .nl { color: #268bd2 }\r\n /* NameNamespace */ .nn { color: #268bd2 }\r\n /* NameOther */ .nx { color: #268bd2 }\r\n /* NameProperty */ .py { color: #268bd2 }\r\n /* NameTag */ .nt { color: #268bd2; font-weight: bold }\r\n /* NameVariable */ .nv { color: #268bd2 }\r\n /* NameVariableClass */ .vc { color: #268bd2 }\r\n /* NameVariableGlobal */ .vg { color: #268bd2 }\r\n /* NameVariableInstance */ .vi { color: #268bd2 }\r\n /* NameVariableMagic */ .vm { color: #268bd2 }\r\n /* Literal */ .l { color: #2aa198 }\r\n /* LiteralDate */ .ld { color: #2aa198 }\r\n /* LiteralString */ .s { color: #2aa198 }\r\n /* LiteralStringAffix */ .sa { color: #2aa198 }\r\n /* LiteralStringBacktick */ .sb { color: #2aa198 }\r\n /* LiteralStringChar */ .sc { color: #2aa198 }\r\n /* LiteralStringDelimiter */ .dl { color: #2aa198 }\r\n /* LiteralStringDoc */ .sd { color: #2aa198 }\r\n /* LiteralStringDouble */ .s2 { color: #2aa198 }\r\n /* LiteralStringEscape */ .se { color: #2aa198 }\r\n /* LiteralStringHeredoc */ .sh { color: #2aa198 }\r\n /* LiteralStringInterpol */ .si { color: #2aa198 }\r\n /* LiteralStringOther */ .sx { color: #2aa198 }\r\n /* LiteralStringRegex */ .sr { color: #2aa198 }\r\n /* LiteralStringSingle */ .s1 { color: #2aa198 }\r\n /* LiteralStringSymbol */ .ss { color: #2aa198 }\r\n /* LiteralNumber */ .m { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberBin */ .mb { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberFloat */ .mf { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberHex */ .mh { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberInteger */ .mi { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberIntegerLong */ .il { color: #2aa198; font-weight: bold }\r\n /* LiteralNumberOct */ .mo { color: #2aa198; font-weight: bold }\r\n /* OperatorWord */ .ow { color: #859900 }\r\n /* Comment */ .c { color: #93a1a1; font-style: italic }\r\n /* CommentHashbang */ .ch { color: #93a1a1; font-style: italic }\r\n /* CommentMultiline */ .cm { color: #93a1a1; font-style: italic }\r\n /* CommentSingle */ .c1 { color: #93a1a1; font-style: italic }\r\n /* CommentSpecial */ .cs { color: #93a1a1; font-style: italic }\r\n /* CommentPreproc */ .cp { color: #93a1a1; font-style: italic }\r\n /* CommentPreprocFile */ .cpf { color: #93a1a1; font-style: italic }\r\n /* Generic */ .g { color: #d33682 }\r\n /* GenericDeleted */ .gd { color: #d33682 }\r\n /* GenericEmph */ .ge { color: #d33682 }\r\n /* GenericError */ .gr { color: #d33682 }\r\n /* GenericHeading */ .gh { color: #d33682 }\r\n /* GenericInserted */ .gi { color: #d33682 }\r\n /* GenericOutput */ .go { color: #d33682 }\r\n /* GenericPrompt */ .gp { color: #d33682 }\r\n /* GenericStrong */ .gs { color: #d33682 }\r\n /* GenericSubheading */ .gu { color: #d33682 }\r\n /* GenericTraceback */ .gt { color: #d33682 }\r\n}\r\n",".admonition {\r\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),\r\n 0 1px 5px 0 rgba(0,0,0,.12),\r\n 0 3px 1px -2px rgba(0,0,0,.2);\r\n position: relative;\r\n margin: .9765em 0;\r\n padding: 0 .75rem;\r\n border-left: .25rem solid #448aff;\r\n border-radius: .125rem;\r\n overflow: auto;\r\n\r\n .admonition-title {\r\n margin: 0 -0.75rem;\r\n padding: .5rem .75rem .5rem 2.5rem;\r\n border-bottom: .1rem solid rgba(68,138,255,.1);\r\n background-color: rgba(68,138,255,.1);\r\n font-weight: 700;\r\n }\r\n\r\n .admonition-title:before {\r\n @extend %base-iconfont;\r\n cursor: auto;\r\n position: absolute;\r\n left: .75rem;\r\n top: .75rem;\r\n }\r\n\r\n &.note {\r\n border-left-color: #448aff;\r\n\r\n .admonition-title:before {\r\n color: #448aff;\r\n content: \"\\e903\";\r\n }\r\n }\r\n\r\n &.abstract {\r\n border-left-color: #00b0ff;\r\n\r\n .admonition-title {\r\n background-color: rgba(0,176,255,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #00b0ff;\r\n content: \"\\e9bb\";\r\n }\r\n }\r\n\r\n &.info {\r\n border-left-color: #00b8d4;\r\n\r\n .admonition-title {\r\n background-color: rgba(0,184,212,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #00b8d4;\r\n content: \"\\ea0c\";\r\n }\r\n }\r\n\r\n &.tip {\r\n border-left-color: #00bfa5;\r\n\r\n .admonition-title {\r\n background-color: rgba(0,191,165,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #00bfa5;\r\n content: \"\\e906\";\r\n }\r\n }\r\n\r\n &.success {\r\n border-left-color: #00c853;\r\n\r\n .admonition-title {\r\n background-color: rgba(0,200,83,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #00c853;\r\n content: \"\\ea10\";\r\n }\r\n }\r\n\r\n &.question {\r\n border-left-color: #64dd17;\r\n\r\n .admonition-title {\r\n background-color: rgba(100,221,23,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #64dd17;\r\n content: \"\\ea09\";\r\n }\r\n }\r\n\r\n &.warning {\r\n border-left-color: #ff9100;\r\n\r\n .admonition-title {\r\n background-color: rgba(255,145,0,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #ff9100;\r\n content: \"\\ea07\";\r\n }\r\n }\r\n\r\n &.failure {\r\n border-left-color: #ff5252;\r\n\r\n .admonition-title {\r\n background-color: rgba(255,82,82,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #ff5252;\r\n content: \"\\ea0f\";\r\n }\r\n }\r\n\r\n &.danger {\r\n border-left-color: #ff1744;\r\n\r\n .admonition-title {\r\n background-color: rgba(255,23,68,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #ff1744;\r\n content: \"\\e905\";\r\n }\r\n }\r\n\r\n &.bug {\r\n border-left-color: #f50057;\r\n\r\n .admonition-title {\r\n background-color: rgba(245,0,87,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #f50057;\r\n content: \"\\e907\";\r\n }\r\n }\r\n\r\n &.example {\r\n border-left-color: #651fff;\r\n\r\n .admonition-title {\r\n background-color: rgba(101,31,255,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #651fff;\r\n content: \"\\e9b9\";\r\n }\r\n }\r\n\r\n &.quote {\r\n border-left-color: #9e9e9e;\r\n\r\n .admonition-title {\r\n background-color: hsla(0,0%,62%,.1);\r\n }\r\n\r\n .admonition-title:before {\r\n color: #9e9e9e;\r\n content: \"\\e904\";\r\n }\r\n }\r\n\r\n &:last-child {\r\n margin-bottom: .75rem;\r\n }\r\n}\r\n\r\ndetails.admonition {\r\n summary {\r\n display: block;\r\n outline: none;\r\n cursor: pointer;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n\r\n &:after {\r\n @extend %base-iconfont;\r\n position: absolute;\r\n top: .75rem;\r\n right: .75rem;\r\n color: rgba(0,0,0,.26);\r\n content: \"\\e908\";\r\n }\r\n }\r\n}\r\n\r\ndetails.admonition[open] {\r\n > summary:after {\r\n transform: rotate(180deg);\r\n }\r\n}\r\n",".post-copyright {\r\n margin-top: 20px;\r\n padding-top: 10px;\r\n border-top: 1px dashed $light-gray;\r\n\r\n .copyright-item {\r\n margin: 5px 0;\r\n\r\n a {\r\n color: $theme-color;\r\n word-wrap: break-word;\r\n\r\n &:hover {\r\n border-bottom: $content-link-border;\r\n }\r\n }\r\n\r\n .item-title {\r\n display: inline-block;\r\n min-width: 5rem;\r\n margin-right: .5rem;\r\n text-align: right;\r\n\r\n &:after {\r\n content: \" :\";\r\n }\r\n }\r\n }\r\n}\r\n",".post-reward {\r\n margin-top: 20px;\r\n padding-top: 10px;\r\n text-align: center;\r\n border-top: 1px dashed $light-gray;\r\n\r\n .reward-button {\r\n margin: 15px 0;\r\n padding: 3px 7px;\r\n display: inline-block;\r\n color: $theme-color;\r\n border: 1px solid $theme-color;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n color: $white;\r\n background-color: $theme-color;\r\n transition: 0.5s;\r\n }\r\n }\r\n\r\n #reward:checked {\r\n & ~ .qr-code {\r\n display: block;\r\n }\r\n\r\n & ~ .reward-button {\r\n display: none;\r\n }\r\n }\r\n\r\n .qr-code {\r\n display: none;\r\n\r\n .qr-code-image {\r\n display: inline-block;\r\n min-width: 200px;\r\n width: 40%;\r\n margin-top: 15px;\r\n\r\n span {\r\n display: inline-block;\r\n width: 100%;\r\n margin: 8px 0;\r\n }\r\n }\r\n\r\n .image {\r\n width: 200px;\r\n height: 200px;\r\n }\r\n }\r\n}","// ==============================\r\n// Post footer\r\n// ==============================\r\n\r\n.post-footer {\r\n margin-top: $post-footer-margin-top;\r\n border-top: $post-footer-border-top;\r\n font-family: $global-serif-font-family;\r\n\r\n .post-tags {\r\n padding: $post-tags-padding;\r\n\r\n a {\r\n margin-right: 5px;\r\n color: $theme-color;\r\n word-break: break-all;\r\n\r\n &::before {\r\n content: '#';\r\n }\r\n }\r\n }\r\n\r\n .post-nav {\r\n margin: 1em 0;\r\n @include clearfix;\r\n\r\n .prev,\r\n .next {\r\n font-weight: 600;\r\n font-size: $post-nav-font-size;\r\n font-family: $global-serif-font-family;\r\n transition-property: transform;\r\n transition-timing-function: ease-out;\r\n transition-duration: 0.3s;\r\n }\r\n\r\n .prev {\r\n float: left;\r\n\r\n &:hover {\r\n color: $theme-color;\r\n transform: translateX(-4px); \r\n }\r\n }\r\n\r\n .next {\r\n float: right;\r\n\r\n &:hover {\r\n color: $theme-color;\r\n transform: translateX(4px); \r\n }\r\n }\r\n\r\n .nav-mobile {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .post-footer {\r\n .post-nav {\r\n .nav-default {\r\n display: none;\r\n }\r\n\r\n .nav-mobile {\r\n display: inline;\r\n }\r\n }\r\n }\r\n}",".post-outdated {\r\n .hint {\r\n position: relative;\r\n margin-top: 20px;\r\n margin-bottom: 20px;\r\n padding: 5px 10px;\r\n border-left: 4px solid rgb(66, 172, 243);\r\n background-color: rgb(239, 245, 255);\r\n border-color: rgb(66, 172, 243);\r\n }\r\n\r\n .warn {\r\n position: relative;\r\n margin-top: 20px;\r\n margin-bottom: 20px;\r\n padding: 5px 10px;\r\n border-left: 4px solid #f9cf63;\r\n background-color: #ffffc0;\r\n border-color: #f9cf63;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","// ==============================\r\n// Pagination\r\n// ==============================\r\n\r\n.pagination {\r\n margin: $pagination-margin;\r\n @include clearfix;\r\n\r\n .prev,\r\n .next {\r\n font-weight: 600;\r\n font-size: $pagination-font-size;\r\n font-family: $global-serif-font-family;\r\n transition-property: transform;\r\n transition-timing-function: ease-out;\r\n transition-duration: 0.3s;\r\n }\r\n\r\n .prev {\r\n float: left;\r\n\r\n &:hover {\r\n color: $theme-color;\r\n transform: translateX(-4px); \r\n }\r\n }\r\n\r\n .next {\r\n float: right;\r\n\r\n &:hover {\r\n color: $theme-color;\r\n transform: translateX(4px); \r\n }\r\n }\r\n}","// ==============================\r\n// Post footer\r\n// =============================\r\n\r\n.footer {\r\n margin-top: $footer-margin-top;\r\n\r\n @import \"_footer/social\";\r\n @import \"_footer/copyright\";\r\n}","// ==============================\r\n// Social\r\n// =============================\r\n\r\n.social-links {\r\n text-align: center;\r\n\r\n .iconfont {\r\n font-size: $social-icon-font-size;\r\n\r\n & + .iconfont {\r\n margin-left: $social-link-margin-left;\r\n } \r\n\r\n &:hover {\r\n color: $theme-color;\r\n }\r\n }\r\n}","// ==============================\r\n// Copyright\r\n// =============================\r\n\r\n.copyright {\r\n margin: $copyright-margin;\r\n color: $dark-gray;\r\n text-align: center;\r\n font-family: $global-serif-font-family;\r\n\r\n .hexo-link,\r\n .theme-link {\r\n color: $theme-color;\r\n }\r\n\r\n .copyright-year {\r\n display: block;\r\n\r\n .heart {\r\n font-size: 14px;\r\n }\r\n }\r\n}","// ==============================\r\n// Archive\r\n// =============================\r\n\r\n.archive {\r\n margin: $archive-margin;\r\n max-width: $archive-max-width;\r\n\r\n .archive-title {\r\n font-family: $global-serif-font-family;\r\n\r\n &.tag,\r\n &.category {\r\n margin: 15px 0;\r\n }\r\n\r\n .archive-name {\r\n margin: 0;\r\n display: inline-block;\r\n font-weight: 400;\r\n font-size: $archive-name-font-size;\r\n line-height: $archive-name-font-size + 2px;\r\n }\r\n\r\n .archive-post-counter {\r\n color: $dark-gray;\r\n }\r\n }\r\n\r\n .collection-title {\r\n font-family: $global-serif-font-family;\r\n \r\n .archive-year {\r\n margin: 15px 0;\r\n font-weight: 400;\r\n font-size: $collection-title-font-size;\r\n line-height: $collection-title-font-size + 2px;\r\n }\r\n }\r\n\r\n .archive-post {\r\n padding: $archive-post-padding;\r\n border-left: $archive-post-border-left;\r\n\r\n .archive-post-time {\r\n margin-right: 10px;\r\n color: $dark-gray;\r\n }\r\n\r\n .archive-post-title {\r\n \r\n .archive-post-link {\r\n color: $theme-color;\r\n }\r\n }\r\n\r\n &::first-child {\r\n margin-top: 10px;\r\n }\r\n\r\n &:hover {\r\n border-left: $archive-post-hover-border-left;\r\n transition: $archive-post-hover-transition;\r\n transform: $archive-post-hover-transform;\r\n\r\n .archive-post-time {\r\n color: darken($dark-gray, 10%);\r\n }\r\n\r\n .archive-post-title .archive-post-link {\r\n color: darken($theme-color, 10%);\r\n }\r\n }\r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .archive {\r\n margin-left: auto;\r\n margin-right: auto;\r\n\r\n .archive-title .archive-name {\r\n font-size: $archive-name-font-size - 4px;\r\n }\r\n\r\n .collection-title .archive-year {\r\n margin: 10px 0;\r\n font-size: $collection-title-font-size - 4px;\r\n }\r\n\r\n .archive-post {\r\n padding: $archive-post-mobile-padding;\r\n\r\n .archive-post-time {\r\n font-size: $archive-post-mobile-time-font-size;\r\n display: block;\r\n }\r\n }\r\n }\r\n}\r\n","// ==============================\r\n// General Terms(tags, categories, etc.)\r\n// =============================\r\n\r\n.terms {\r\n margin: 2em 0 3em;\r\n text-align: center;\r\n font-family: $global-serif-font-family;\r\n\r\n .terms-title {\r\n display: inline-block;\r\n font-size: $terms-title-size;\r\n color: $theme-color;\r\n border-bottom: $terms-title-border-bottom;\r\n }\r\n\r\n .terms-tags {\r\n margin: 10px 0;\r\n\r\n .terms-link {\r\n display: inline-block;\r\n position: relative;\r\n margin: $terms-link-margin;\r\n word-wrap: break-word;\r\n transition-duration: 0.2s;\r\n transition-property: transform;\r\n transition-timing-function: ease-out;\r\n\r\n .terms-count {\r\n display: inline-block;\r\n position: relative;\r\n top: -8px;\r\n right: -2px;\r\n color: $theme-color;\r\n font-size: $terms-count-font-size;\r\n }\r\n\r\n &:active,\r\n &:focus,\r\n &:hover {\r\n color: $theme-color;\r\n transform: scale(1.1);\r\n }\r\n }\r\n }\r\n}","// ==============================\r\n// slideout (https://github.com/mango/slideout)\r\n// ==============================\r\n\r\n.slideout-menu {\r\n position: fixed;\r\n top: 0;\r\n left: 0px;\r\n bottom: 0;\r\n width: 180px;\r\n min-height: 100vh;\r\n overflow-y: hidden;\r\n -webkit-overflow-scrolling: touch;\r\n z-index: 0;\r\n display: none;\r\n}\r\n\r\n.slideout-panel {\r\n position: relative;\r\n z-index: 1;\r\n background-color: $white;\r\n min-height: 100vh;\r\n}\r\n\r\n.slideout-open,\r\n.slideout-open body,\r\n.slideout-open .slideout-panel {\r\n overflow: hidden;\r\n}\r\n\r\n.slideout-open .slideout-menu {\r\n display: block;\r\n}\r\n","// ==============================\r\n// Mobile Navbar\r\n// ==============================\r\n\r\n.mobile-navbar {\r\n display: none;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: $mobile-navbar-height;\r\n background: $white;\r\n box-shadow: 0px 2px 2px $gray;\r\n text-align: center;\r\n transition: transform 300ms ease;\r\n z-index: 99;\r\n\r\n &.fixed-open {\r\n transform: translate3d(180px, 0px, 0px);\r\n }\r\n\r\n .mobile-header-logo {\r\n display: inline-block;\r\n margin-right: 50px;\r\n\r\n .logo {\r\n font-size: 22px;\r\n line-height: $mobile-navbar-height;\r\n font-family: $logo-font-family;\r\n }\r\n }\r\n\r\n .mobile-navbar-icon {\r\n color: $theme-color;\r\n height: $mobile-navbar-height;\r\n width: $mobile-navbar-height;\r\n font-size: 24px;\r\n text-align: center;\r\n float: left;\r\n position: relative;\r\n transition: background 0.5s;\r\n\r\n @include mobile-menu-icon();\r\n }\r\n}\r\n\r\n.mobile-menu {\r\n background-color: rgba($deputy-color, 0.5);\r\n\r\n .mobile-menu-list {\r\n position: relative;\r\n list-style: none;\r\n margin-top: 50px;\r\n padding: 0;\r\n border-top: 1px solid $deputy-color;\r\n\r\n .mobile-menu-item {\r\n padding: 10px 30px;\r\n border-bottom: 1px solid $deputy-color;\r\n }\r\n\r\n a {\r\n font-size: 18px;\r\n font-family: $global-serif-font-family;\r\n\r\n &:hover {\r\n color: $theme-color;\r\n }\r\n }\r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .mobile-navbar {\r\n display: block;\r\n }\r\n}\r\n","// ==============================\r\n// Back to top\r\n// =============================\r\n\r\n.back-to-top {\r\n display: none;\r\n position: fixed;\r\n right: 20px;\r\n bottom: 20px;\r\n transition-property: transform;\r\n transition-timing-function: ease-out;\r\n transition-duration: 0.3s;\r\n z-index: 10;\r\n\r\n &:hover {\r\n transform: translateY(-5px); \r\n }\r\n}\r\n\r\n@include max-screen() {\r\n .back-to-top {\r\n display: none !important;\r\n }\r\n}","// ==============================\r\n// Archive\r\n// =============================\r\n\r\n.not-found {\r\n text-align: center;\r\n\r\n .error-emoji {\r\n color: #363636;\r\n font-size: 3rem;\r\n }\r\n\r\n .error-text {\r\n color: #797979;\r\n font-size: 1.25rem;\r\n }\r\n\r\n .error-link {\r\n margin-top: 2rem;\r\n\r\n a {\r\n color: $theme-color;\r\n }\r\n }\r\n}"]} \ No newline at end of file diff --git a/static/dist/even.93844dae.min.css b/static/dist/even.c2a46f00.min.css similarity index 99% rename from static/dist/even.93844dae.min.css rename to static/dist/even.c2a46f00.min.css index 5ee9b97..be08d0f 100644 --- a/static/dist/even.93844dae.min.css +++ b/static/dist/even.c2a46f00.min.css @@ -1,4 +1,4 @@ @font-face{font-family:Chancery;src:url(src/fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(src/fonts/chancery/apple-chancery-webfont.eot?#iefix) format("embedded-opentype"),url(src/fonts/chancery/apple-chancery-webfont.woff2) format("woff2"),url(src/fonts/chancery/apple-chancery-webfont.woff) format("woff"),url(src/fonts/chancery/apple-chancery-webfont.ttf) format("truetype"),url(src/fonts/chancery/apple-chancery-webfont.svg#apple-chancery) format("svg");font-weight:lighter;font-style:normal} -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;-webkit-box-sizing:border-box;box-sizing:border-box}body{padding:0;margin:0;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #c05b4d}@media screen and (max-width:800px){body{border-top:0}}::-moz-selection{background:#c05b4d;color:#fff}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px}h1,h2{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px}h3{font-size:20px}h3,h4{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px}h5,h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:800px}@media screen and (max-width:800px){.container{width:100%;-webkit-box-shadow:-1px -5px 5px #cacaca;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(src/fonts/iconfont/iconfont.eot?hash=02d35c6);src:url(src/fonts/iconfont/iconfont.eot?hash=02d35c6#iefix) format("embedded-opentype"),url(src/fonts/iconfont/iconfont.woff?hash=07e77b7) format("woff"),url(src/fonts/iconfont/iconfont.ttf?hash=eff61c2) format("truetype"),url(src/fonts/iconfont/iconfont.svg?hash=b069d5c#iconfont) format("svg")}.iconfont,.post .post-content .admonition .admonition-title:before,.post .post-content details.admonition summary:after{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\E900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\E611";position:relative;top:1px}.icon-douban:before{content:"\E610";position:relative;top:2px}.icon-tumblr:before{content:"\E69F";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\E60D";position:relative;top:-2px}.icon-twitter:before{content:"\E600"}.icon-weibo:before{content:"\E602";position:relative;top:2px}.icon-stack-overflow:before{content:"\E902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\E605";position:relative;top:-2px}.icon-facebook:before{content:"\E601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\E901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\E606";position:relative;top:-1px}.icon-rss:before{content:"\E604"}.icon-google:before{content:"\E609";position:relative;top:2px}.icon-zhihu:before{content:"\E607";font-size:.9em}.icon-pocket:before{content:"\E856";position:relative;top:2px}.icon-heart:before{content:"\E608"}.icon-right:before{content:"\E60A"}.icon-left:before{content:"\E60B"}.icon-up:before{content:"\E60C"}.icon-close:before{content:"\E60F"}.icon-link:before{content:"\E909"}.header{padding:20px}.header:after,.header:before{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:Chancery,cursive,LiSu,sans-serif}@media screen and (max-width:800px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:800px){.header .site-navbar{display:none}}@media screen and (max-width:800px){.header{padding:50px 0 0;text-align:center}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a:before{content:"\B7"}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta:before{content:"\B7"}.post .post-toc{position:absolute;width:200px;margin-left:785px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(248,245,236,.6);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;-webkit-box-sizing:border-box;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#c05b4d}@media screen and (max-width:1185px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(192,91,77,.05);border-left:3px solid rgba(192,91,77,.3);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;-webkit-box-shadow:2px 2px 3px rgba(0,0,0,.125);box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f8f5ec}.post .post-content .table-wrapper>table td,.post .post-content .table-wrapper>table th{padding:5px 15px;border:1px double #f4efe1}.post .post-content .table-wrapper>table tr:hover{background-color:#f8f5ec}.post .post-content code,.post .post-content pre{padding:7px;font-size:13px;font-family:Consolas,Monaco,Menlo,monospace;background:#f8f5ec}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table:after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b1b1;background:#f4efe1;content:"Code"}.post .post-content figure.highlight.language-bash>table:after{content:"Bash"}.post .post-content figure.highlight.language-c>table:after{content:"C"}.post .post-content figure.highlight.language-cs>table:after{content:"C#"}.post .post-content figure.highlight.language-cpp>table:after{content:"C++"}.post .post-content figure.highlight.language-css>table:after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table:after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table:after{content:"HTML"}.post .post-content figure.highlight.language-xml>table:after{content:"XML"}.post .post-content figure.highlight.language-http>table:after{content:"HTTP"}.post .post-content figure.highlight.language-json>table:after{content:"JSON"}.post .post-content figure.highlight.language-java>table:after{content:"Java"}.post .post-content figure.highlight.language-javascript>table:after,.post .post-content figure.highlight.language-js>table:after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table:after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table:after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table:after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table:after{content:"PHP"}.post .post-content figure.highlight.language-perl>table:after{content:"Perl"}.post .post-content figure.highlight.language-python>table:after{content:"Python"}.post .post-content figure.highlight.language-ruby>table:after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table:after{content:"SQL"}.post .post-content figure.highlight.language-shell>table:after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table:after{content:"Erlang"}.post .post-content figure.highlight.language-go>table:after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table:after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table:after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table:after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table:after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table:after{content:"Clojure"}.post .post-content figure.highlight.language-less>table:after{content:"Less"}.post .post-content figure.highlight.language-lisp>table:after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table:after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table:after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table:after{content:"Rust"}.post .post-content figure.highlight.language-scss>table:after{content:"Scss"}.post .post-content figure.highlight.language-scala>table:after{content:"Scala"}.post .post-content figure.highlight.language-swift>table:after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table:after{content:"TypeScript"}.post .post-content figure.highlight.language-yaml>table:after,.post .post-content figure.highlight.language-yml>table:after{content:"YAML"}.post .post-content figure.highlight.language-toml>table:after{content:"TOML"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:20px}.post .post-content figure.highlight table,.post .post-content figure.highlight td,.post .post-content figure.highlight tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-addition,.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag{color:#859900}.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-regexp,.post .post-content figure.highlight .code .hljs-string{color:#2aa198}.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-selector-class,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-title{color:#268bd2}.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-type,.post .post-content figure.highlight .code .hljs-variable{color:#b58900}.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-link,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-symbol{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f8f5ec}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table:after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b1b1;background:#f4efe1;content:"Code"}.post .post-content .highlight>.chroma.language-bash>table:after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table:after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table:after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table:after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table:after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table:after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table:after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table:after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table:after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table:after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table:after{content:"Java"}.post .post-content .highlight>.chroma.language-javascript>table:after,.post .post-content .highlight>.chroma.language-js>table:after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table:after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table:after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table:after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table:after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table:after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table:after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table:after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table:after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table:after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table:after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table:after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table:after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table:after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table:after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table:after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table:after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table:after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table:after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table:after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table:after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table:after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table:after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table:after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table:after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table:after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yaml>table:after,.post .post-content .highlight>.chroma.language-yml>table:after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table:after{content:"TOML"}.post .post-content .highlight>.chroma .lntd{line-height:20px}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma td,.post .post-content .highlight>.chroma tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp,.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n,.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .fm,.post .post-content .highlight>.chroma .nd,.post .post-content .highlight>.chroma .ne,.post .post-content .highlight>.chroma .nf,.post .post-content .highlight>.chroma .ni,.post .post-content .highlight>.chroma .nl,.post .post-content .highlight>.chroma .nn,.post .post-content .highlight>.chroma .no,.post .post-content .highlight>.chroma .nx,.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv,.post .post-content .highlight>.chroma .vc,.post .post-content .highlight>.chroma .vg,.post .post-content .highlight>.chroma .vi,.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .dl,.post .post-content .highlight>.chroma .l,.post .post-content .highlight>.chroma .ld,.post .post-content .highlight>.chroma .s,.post .post-content .highlight>.chroma .s1,.post .post-content .highlight>.chroma .s2,.post .post-content .highlight>.chroma .sa,.post .post-content .highlight>.chroma .sb,.post .post-content .highlight>.chroma .sc,.post .post-content .highlight>.chroma .sd,.post .post-content .highlight>.chroma .se,.post .post-content .highlight>.chroma .sh,.post .post-content .highlight>.chroma .si,.post .post-content .highlight>.chroma .sr,.post .post-content .highlight>.chroma .ss,.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .il,.post .post-content .highlight>.chroma .m,.post .post-content .highlight>.chroma .mb,.post .post-content .highlight>.chroma .mf,.post .post-content .highlight>.chroma .mh,.post .post-content .highlight>.chroma .mi,.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c,.post .post-content .highlight>.chroma .c1,.post .post-content .highlight>.chroma .ch,.post .post-content .highlight>.chroma .cm,.post .post-content .highlight>.chroma .cp,.post .post-content .highlight>.chroma .cpf,.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g,.post .post-content .highlight>.chroma .gd,.post .post-content .highlight>.chroma .ge,.post .post-content .highlight>.chroma .gh,.post .post-content .highlight>.chroma .gi,.post .post-content .highlight>.chroma .go,.post .post-content .highlight>.chroma .gp,.post .post-content .highlight>.chroma .gr,.post .post-content .highlight>.chroma .gs,.post .post-content .highlight>.chroma .gt,.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .admonition{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:.9765em 0;padding:0 .75rem;border-left:.25rem solid #448aff;border-radius:.125rem;overflow:auto}.post .post-content .admonition .admonition-title{margin:0 -.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:.1rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}.post .post-content .admonition .admonition-title:before{cursor:auto;position:absolute;left:.75rem;top:.75rem}.post .post-content .admonition.note{border-left-color:#448aff}.post .post-content .admonition.note .admonition-title:before{color:#448aff;content:"\E903"}.post .post-content .admonition.abstract{border-left-color:#00b0ff}.post .post-content .admonition.abstract .admonition-title{background-color:rgba(0,176,255,.1)}.post .post-content .admonition.abstract .admonition-title:before{color:#00b0ff;content:"\E9BB"}.post .post-content .admonition.info{border-left-color:#00b8d4}.post .post-content .admonition.info .admonition-title{background-color:rgba(0,184,212,.1)}.post .post-content .admonition.info .admonition-title:before{color:#00b8d4;content:"\EA0C"}.post .post-content .admonition.tip{border-left-color:#00bfa5}.post .post-content .admonition.tip .admonition-title{background-color:rgba(0,191,165,.1)}.post .post-content .admonition.tip .admonition-title:before{color:#00bfa5;content:"\E906"}.post .post-content .admonition.success{border-left-color:#00c853}.post .post-content .admonition.success .admonition-title{background-color:rgba(0,200,83,.1)}.post .post-content .admonition.success .admonition-title:before{color:#00c853;content:"\EA10"}.post .post-content .admonition.question{border-left-color:#64dd17}.post .post-content .admonition.question .admonition-title{background-color:rgba(100,221,23,.1)}.post .post-content .admonition.question .admonition-title:before{color:#64dd17;content:"\EA09"}.post .post-content .admonition.warning{border-left-color:#ff9100}.post .post-content .admonition.warning .admonition-title{background-color:rgba(255,145,0,.1)}.post .post-content .admonition.warning .admonition-title:before{color:#ff9100;content:"\EA07"}.post .post-content .admonition.failure{border-left-color:#ff5252}.post .post-content .admonition.failure .admonition-title{background-color:rgba(255,82,82,.1)}.post .post-content .admonition.failure .admonition-title:before{color:#ff5252;content:"\EA0F"}.post .post-content .admonition.danger{border-left-color:#ff1744}.post .post-content .admonition.danger .admonition-title{background-color:rgba(255,23,68,.1)}.post .post-content .admonition.danger .admonition-title:before{color:#ff1744;content:"\E905"}.post .post-content .admonition.bug{border-left-color:#f50057}.post .post-content .admonition.bug .admonition-title{background-color:rgba(245,0,87,.1)}.post .post-content .admonition.bug .admonition-title:before{color:#f50057;content:"\E907"}.post .post-content .admonition.example{border-left-color:#651fff}.post .post-content .admonition.example .admonition-title{background-color:rgba(101,31,255,.1)}.post .post-content .admonition.example .admonition-title:before{color:#651fff;content:"\E9B9"}.post .post-content .admonition.quote{border-left-color:#9e9e9e}.post .post-content .admonition.quote .admonition-title{background-color:hsla(0,0%,62%,.1)}.post .post-content .admonition.quote .admonition-title:before{color:#9e9e9e;content:"\E904"}.post .post-content .admonition:last-child{margin-bottom:.75rem}.post .post-content details.admonition summary{display:block;outline:none;cursor:pointer}.post .post-content details.admonition summary::-webkit-details-marker{display:none}.post .post-content details.admonition summary:after{position:absolute;top:.75rem;right:.75rem;color:rgba(0,0,0,.26);content:"\E908"}.post .post-content details.admonition[open]>summary:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #b5b5b5;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:SFMono-Regular,Liberation Mono,Roboto Mono,Menlo,Monaco,Consolas,Courier New,Courier,monospace;color:#4a4a4a}.post .post-content dl dt:after{content:":"}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #c05b4d;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#c05b4d;border:1px solid #c05b4d;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#c05b4d;-webkit-transition:.5s;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button,.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#c05b4d;word-break:break-all}.post .post-footer .post-tags a:before{content:"#"}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:after,.post .post-footer .post-nav:before{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .next,.post .post-footer .post-nav .prev{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:800px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .post-outdated .hint{background-color:#eff5ff;border-color:#42acf3}.post .post-outdated .hint,.post .post-outdated .warn{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid}.post .post-outdated .warn{background-color:#ffffc0;border-color:#f9cf63}.pagination{margin:2em 0}.pagination:after,.pagination:before{content:" ";display:table}.pagination:after{clear:both}.pagination .next,.pagination .prev{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.category,.archive .archive-title.tag{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #c05b4d;-webkit-transition:.2s ease-out;transition:.2s ease-out;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}@media screen and (max-width:800px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#c05b4d;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;-webkit-box-shadow:0 2px 2px #cacaca;box-shadow:0 2px 2px #cacaca;text-align:center;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;z-index:99}.mobile-navbar.fixed-open{-webkit-transform:translate3d(180px,0,0);transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:Chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;-webkit-transition:background .5s;transition:background .5s}@-webkit-keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@-webkit-keyframes clickmid{0%{opacity:1}to{opacity:0}}@keyframes clickmid{0%{opacity:1}to{opacity:0}}@-webkit-keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@-webkit-keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@-webkit-keyframes outmid{0%{opacity:0}to{opacity:1}}@keyframes outmid{0%{opacity:0}to{opacity:1}}@-webkit-keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}@keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:first-child{-webkit-transform:translateY(6px) rotate(0deg);-ms-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){-webkit-transform:translateY(-6px) rotate(0deg);-ms-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickfirst;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickmid;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clicklast;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outfirst;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outmid;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outlast;animation-name:outlast}.mobile-menu{background-color:rgba(248,245,236,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:800px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:20px;bottom:20px;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s;z-index:10}.back-to-top:hover{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}@media screen and (max-width:800px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d} -/*# sourceMappingURL=even.93844dae.min.css.map */ \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;-webkit-box-sizing:border-box;box-sizing:border-box}body{padding:0;margin:0;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #c05b4d}@media screen and (max-width:800px){body{border-top:0}}::-moz-selection{background:#c05b4d;color:#fff}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px}h1,h2{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px}h3{font-size:20px}h3,h4{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px}h5,h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:800px}@media screen and (max-width:800px){.container{width:100%;-webkit-box-shadow:-1px -5px 5px #cacaca;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(src/fonts/iconfont/iconfont.eot?hash=02d35c6);src:url(src/fonts/iconfont/iconfont.eot?hash=02d35c6#iefix) format("embedded-opentype"),url(src/fonts/iconfont/iconfont.woff?hash=07e77b7) format("woff"),url(src/fonts/iconfont/iconfont.ttf?hash=eff61c2) format("truetype"),url(src/fonts/iconfont/iconfont.svg?hash=fca7b43#iconfont) format("svg")}.iconfont,.post .post-content .admonition .admonition-title:before,.post .post-content details.admonition summary:after{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\E900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\E611";position:relative;top:1px}.icon-douban:before{content:"\E610";position:relative;top:2px}.icon-tumblr:before{content:"\E69F";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\E60D";position:relative;top:-2px}.icon-twitter:before{content:"\E600"}.icon-weibo:before{content:"\E602";position:relative;top:2px}.icon-stack-overflow:before{content:"\E902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\E605";position:relative;top:-2px}.icon-facebook:before{content:"\E601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\E901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\E606";position:relative;top:-1px}.icon-rss:before{content:"\E604"}.icon-google:before{content:"\E609";position:relative;top:2px}.icon-zhihu:before{content:"\E607";font-size:.9em}.icon-pocket:before{content:"\E856";position:relative;top:2px}.icon-heart:before{content:"\E608"}.icon-right:before{content:"\E60A"}.icon-left:before{content:"\E60B"}.icon-up:before{content:"\E60C"}.icon-close:before{content:"\E60F"}.icon-link:before{content:"\E909"}.header{padding:20px}.header:after,.header:before{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:Chancery,cursive,LiSu,sans-serif}@media screen and (max-width:800px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:800px){.header .site-navbar{display:none}}@media screen and (max-width:800px){.header{padding:50px 0 0;text-align:center}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a:before{content:"\B7"}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta:before{content:"\B7"}.post .post-toc{position:absolute;width:200px;margin-left:785px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(248,245,236,.6);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;-webkit-box-sizing:border-box;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#c05b4d}@media screen and (max-width:1185px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(192,91,77,.05);border-left:3px solid rgba(192,91,77,.3);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;-webkit-box-shadow:2px 2px 3px rgba(0,0,0,.125);box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f8f5ec}.post .post-content .table-wrapper>table td,.post .post-content .table-wrapper>table th{padding:5px 15px;border:1px double #f4efe1}.post .post-content .table-wrapper>table tr:hover{background-color:#f8f5ec}.post .post-content code,.post .post-content pre{padding:7px;font-size:13px;font-family:Consolas,Monaco,Menlo,monospace;background:#f8f5ec}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table:after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b1b1;background:#f4efe1;content:"Code"}.post .post-content figure.highlight.language-bash>table:after{content:"Bash"}.post .post-content figure.highlight.language-c>table:after{content:"C"}.post .post-content figure.highlight.language-cs>table:after{content:"C#"}.post .post-content figure.highlight.language-cpp>table:after{content:"C++"}.post .post-content figure.highlight.language-css>table:after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table:after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table:after{content:"HTML"}.post .post-content figure.highlight.language-xml>table:after{content:"XML"}.post .post-content figure.highlight.language-http>table:after{content:"HTTP"}.post .post-content figure.highlight.language-json>table:after{content:"JSON"}.post .post-content figure.highlight.language-java>table:after{content:"Java"}.post .post-content figure.highlight.language-javascript>table:after,.post .post-content figure.highlight.language-js>table:after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table:after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table:after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table:after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table:after{content:"PHP"}.post .post-content figure.highlight.language-perl>table:after{content:"Perl"}.post .post-content figure.highlight.language-python>table:after{content:"Python"}.post .post-content figure.highlight.language-ruby>table:after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table:after{content:"SQL"}.post .post-content figure.highlight.language-shell>table:after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table:after{content:"Erlang"}.post .post-content figure.highlight.language-go>table:after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table:after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table:after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table:after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table:after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table:after{content:"Clojure"}.post .post-content figure.highlight.language-less>table:after{content:"Less"}.post .post-content figure.highlight.language-lisp>table:after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table:after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table:after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table:after{content:"Rust"}.post .post-content figure.highlight.language-scss>table:after{content:"Scss"}.post .post-content figure.highlight.language-scala>table:after{content:"Scala"}.post .post-content figure.highlight.language-swift>table:after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table:after{content:"TypeScript"}.post .post-content figure.highlight.language-yaml>table:after,.post .post-content figure.highlight.language-yml>table:after{content:"YAML"}.post .post-content figure.highlight.language-toml>table:after{content:"TOML"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:20px}.post .post-content figure.highlight table,.post .post-content figure.highlight td,.post .post-content figure.highlight tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-addition,.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag{color:#859900}.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-regexp,.post .post-content figure.highlight .code .hljs-string{color:#2aa198}.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-selector-class,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-title{color:#268bd2}.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-type,.post .post-content figure.highlight .code .hljs-variable{color:#b58900}.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-link,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-symbol{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f8f5ec}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table:after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b1b1;background:#f4efe1;content:"Code"}.post .post-content .highlight>.chroma.language-bash>table:after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table:after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table:after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table:after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table:after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table:after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table:after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table:after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table:after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table:after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table:after{content:"Java"}.post .post-content .highlight>.chroma.language-javascript>table:after,.post .post-content .highlight>.chroma.language-js>table:after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table:after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table:after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table:after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table:after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table:after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table:after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table:after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table:after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table:after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table:after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table:after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table:after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table:after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table:after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table:after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table:after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table:after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table:after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table:after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table:after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table:after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table:after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table:after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table:after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table:after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yaml>table:after,.post .post-content .highlight>.chroma.language-yml>table:after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table:after{content:"TOML"}.post .post-content .highlight>.chroma .lntd{line-height:20px}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma td,.post .post-content .highlight>.chroma tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp,.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n,.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .fm,.post .post-content .highlight>.chroma .nd,.post .post-content .highlight>.chroma .ne,.post .post-content .highlight>.chroma .nf,.post .post-content .highlight>.chroma .ni,.post .post-content .highlight>.chroma .nl,.post .post-content .highlight>.chroma .nn,.post .post-content .highlight>.chroma .no,.post .post-content .highlight>.chroma .nx,.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv,.post .post-content .highlight>.chroma .vc,.post .post-content .highlight>.chroma .vg,.post .post-content .highlight>.chroma .vi,.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .dl,.post .post-content .highlight>.chroma .l,.post .post-content .highlight>.chroma .ld,.post .post-content .highlight>.chroma .s,.post .post-content .highlight>.chroma .s1,.post .post-content .highlight>.chroma .s2,.post .post-content .highlight>.chroma .sa,.post .post-content .highlight>.chroma .sb,.post .post-content .highlight>.chroma .sc,.post .post-content .highlight>.chroma .sd,.post .post-content .highlight>.chroma .se,.post .post-content .highlight>.chroma .sh,.post .post-content .highlight>.chroma .si,.post .post-content .highlight>.chroma .sr,.post .post-content .highlight>.chroma .ss,.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .il,.post .post-content .highlight>.chroma .m,.post .post-content .highlight>.chroma .mb,.post .post-content .highlight>.chroma .mf,.post .post-content .highlight>.chroma .mh,.post .post-content .highlight>.chroma .mi,.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c,.post .post-content .highlight>.chroma .c1,.post .post-content .highlight>.chroma .ch,.post .post-content .highlight>.chroma .cm,.post .post-content .highlight>.chroma .cp,.post .post-content .highlight>.chroma .cpf,.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g,.post .post-content .highlight>.chroma .gd,.post .post-content .highlight>.chroma .ge,.post .post-content .highlight>.chroma .gh,.post .post-content .highlight>.chroma .gi,.post .post-content .highlight>.chroma .go,.post .post-content .highlight>.chroma .gp,.post .post-content .highlight>.chroma .gr,.post .post-content .highlight>.chroma .gs,.post .post-content .highlight>.chroma .gt,.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .admonition{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:.9765em 0;padding:0 .75rem;border-left:.25rem solid #448aff;border-radius:.125rem;overflow:auto}.post .post-content .admonition .admonition-title{margin:0 -.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:.1rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}.post .post-content .admonition .admonition-title:before{cursor:auto;position:absolute;left:.75rem;top:.75rem}.post .post-content .admonition.note{border-left-color:#448aff}.post .post-content .admonition.note .admonition-title:before{color:#448aff;content:"\E903"}.post .post-content .admonition.abstract{border-left-color:#00b0ff}.post .post-content .admonition.abstract .admonition-title{background-color:rgba(0,176,255,.1)}.post .post-content .admonition.abstract .admonition-title:before{color:#00b0ff;content:"\E9BB"}.post .post-content .admonition.info{border-left-color:#00b8d4}.post .post-content .admonition.info .admonition-title{background-color:rgba(0,184,212,.1)}.post .post-content .admonition.info .admonition-title:before{color:#00b8d4;content:"\EA0C"}.post .post-content .admonition.tip{border-left-color:#00bfa5}.post .post-content .admonition.tip .admonition-title{background-color:rgba(0,191,165,.1)}.post .post-content .admonition.tip .admonition-title:before{color:#00bfa5;content:"\E906"}.post .post-content .admonition.success{border-left-color:#00c853}.post .post-content .admonition.success .admonition-title{background-color:rgba(0,200,83,.1)}.post .post-content .admonition.success .admonition-title:before{color:#00c853;content:"\EA10"}.post .post-content .admonition.question{border-left-color:#64dd17}.post .post-content .admonition.question .admonition-title{background-color:rgba(100,221,23,.1)}.post .post-content .admonition.question .admonition-title:before{color:#64dd17;content:"\EA09"}.post .post-content .admonition.warning{border-left-color:#ff9100}.post .post-content .admonition.warning .admonition-title{background-color:rgba(255,145,0,.1)}.post .post-content .admonition.warning .admonition-title:before{color:#ff9100;content:"\EA07"}.post .post-content .admonition.failure{border-left-color:#ff5252}.post .post-content .admonition.failure .admonition-title{background-color:rgba(255,82,82,.1)}.post .post-content .admonition.failure .admonition-title:before{color:#ff5252;content:"\EA0F"}.post .post-content .admonition.danger{border-left-color:#ff1744}.post .post-content .admonition.danger .admonition-title{background-color:rgba(255,23,68,.1)}.post .post-content .admonition.danger .admonition-title:before{color:#ff1744;content:"\E905"}.post .post-content .admonition.bug{border-left-color:#f50057}.post .post-content .admonition.bug .admonition-title{background-color:rgba(245,0,87,.1)}.post .post-content .admonition.bug .admonition-title:before{color:#f50057;content:"\E907"}.post .post-content .admonition.example{border-left-color:#651fff}.post .post-content .admonition.example .admonition-title{background-color:rgba(101,31,255,.1)}.post .post-content .admonition.example .admonition-title:before{color:#651fff;content:"\E9B9"}.post .post-content .admonition.quote{border-left-color:#9e9e9e}.post .post-content .admonition.quote .admonition-title{background-color:hsla(0,0%,62%,.1)}.post .post-content .admonition.quote .admonition-title:before{color:#9e9e9e;content:"\E904"}.post .post-content .admonition:last-child{margin-bottom:.75rem}.post .post-content details.admonition summary{display:block;outline:none;cursor:pointer}.post .post-content details.admonition summary::-webkit-details-marker{display:none}.post .post-content details.admonition summary:after{position:absolute;top:.75rem;right:.75rem;color:rgba(0,0,0,.26);content:"\E908"}.post .post-content details.admonition[open]>summary:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #b5b5b5;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:SFMono-Regular,Liberation Mono,Roboto Mono,Menlo,Monaco,Consolas,Courier New,Courier,monospace;color:#4a4a4a}.post .post-content dl dt:after{content:":"}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #c05b4d;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#c05b4d;border:1px solid #c05b4d;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#c05b4d;-webkit-transition:.5s;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button,.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#c05b4d;word-break:break-all}.post .post-footer .post-tags a:before{content:"#"}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:after,.post .post-footer .post-nav:before{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .next,.post .post-footer .post-nav .prev{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:800px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .post-outdated .hint{background-color:#eff5ff;border-color:#42acf3}.post .post-outdated .hint,.post .post-outdated .warn{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid}.post .post-outdated .warn{background-color:#ffffc0;border-color:#f9cf63}.pagination{margin:2em 0}.pagination:after,.pagination:before{content:" ";display:table}.pagination:after{clear:both}.pagination .next,.pagination .prev{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.category,.archive .archive-title.tag{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #c05b4d;-webkit-transition:.2s ease-out;transition:.2s ease-out;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}@media screen and (max-width:800px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#c05b4d;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;-webkit-box-shadow:0 2px 2px #cacaca;box-shadow:0 2px 2px #cacaca;text-align:center;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;z-index:99}.mobile-navbar.fixed-open{-webkit-transform:translate3d(180px,0,0);transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:Chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;-webkit-transition:background .5s;transition:background .5s}@-webkit-keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@-webkit-keyframes clickmid{0%{opacity:1}to{opacity:0}}@keyframes clickmid{0%{opacity:1}to{opacity:0}}@-webkit-keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@-webkit-keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@-webkit-keyframes outmid{0%{opacity:0}to{opacity:1}}@keyframes outmid{0%{opacity:0}to{opacity:1}}@-webkit-keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}@keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:first-child{-webkit-transform:translateY(6px) rotate(0deg);-ms-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){-webkit-transform:translateY(-6px) rotate(0deg);-ms-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickfirst;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickmid;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clicklast;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outfirst;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outmid;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outlast;animation-name:outlast}.mobile-menu{background-color:rgba(248,245,236,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:800px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:20px;bottom:20px;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s;z-index:10}.back-to-top:hover{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}@media screen and (max-width:800px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d} +/*# sourceMappingURL=even.c2a46f00.min.css.map */ \ No newline at end of file diff --git a/static/dist/even.ece58db6.min.js.map b/static/dist/even.ece58db6.min.js.map deleted file mode 100644 index 9cc7fd9..0000000 --- a/static/dist/even.ece58db6.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/even.js","webpack:///./src/js/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Even","$backToTop","$","window","scroll","scrollTop","fadeIn","fadeOut","click","animate","$mobileNav","$mobileNavIcon","slideout","Slideout","panel","document","getElementById","menu","padding","tolerance","disableTouch","toggle","on","addClass","removeClass","isOpen","$toc","$footer","length","minScrollTop","offset","top","maxScrollTop","height","tocState","start","position","process","end","css","$toclink","$headerlink","$tocLinkLis","headerlinkTop","map","link","headerLinksOffsetForSearch","activeTocIndex","array","target","searchActiveTocIndex","ancestor","parentNode","tagName","fancybox","each","this","find","wrap","concat","src","title","selector","protect","blocks","querySelectorAll","block","rootElement","parentElement","lineCodes","innerHTML","split","pop","lineLength","codeLineHtml","codeHtml","className","figure","createElement","replaceChild","afterHighLight","querySelector","lang","tocContainer","toc","removeChild","_refactorToc","_linkToc","_initToc","temp","oldTocList","children","newTocList","links","num","headers","header","id","flowchart","hljs","container","parse","childNodes","nodeValue","drawSVG","flowchartDiagramsOptions","Diagram","sequenceDiagramsOptions","theme","tables","table","wrapper","appendChild","ready","backToTop","mobileNavbar","responsiveTable","sequence","initHighlighting","highlight","chroma"],"mappings":"aACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,2DChFA,IAAMC,EAAO,CAEbA,UAAiB,WACf,IAAMC,EAAaC,EAAE,gBAErBA,EAAEC,QAAQC,OAAO,WACa,IAAxBF,EAAEC,QAAQE,YACZJ,EAAWK,OAAO,KAElBL,EAAWM,QAAQ,OAIvBN,EAAWO,MAAM,WACfN,EAAE,aAAaO,QAAQ,CAACJ,UAAW,OAIvCL,aAAoB,WAClB,IAAMU,EAAaR,EAAE,kBACfS,EAAiBT,EAAE,uBACnBU,EAAW,IAAIC,SAAS,CAC5BC,MAASC,SAASC,eAAe,gBACjCC,KAAQF,SAASC,eAAe,eAChCE,QAAW,IACXC,UAAa,KAEfP,EAASQ,eAETT,EAAeH,MAAM,WACnBI,EAASS,WAGXT,EAASU,GAAG,aAAc,WACxBZ,EAAWa,SAAS,cACpBZ,EAAeY,SAAS,cAAcC,YAAY,cAGpDZ,EAASU,GAAG,cAAe,WACzBZ,EAAWc,YAAY,cACvBb,EAAeY,SAAS,YAAYC,YAAY,gBAGlDtB,EAAE,iBAAiBoB,GAAG,WAAY,WAChCV,EAASa,UAAYd,EAAeH,WAIxCR,SAAgB,WACd,IACM0B,EAAOxB,EAAE,aACTyB,EAAUzB,EAAE,gBAElB,GAAIwB,EAAKE,OAAQ,CACf,IAAMC,EAAeH,EAAKI,SAASC,IALrB,GAMRC,EAAeL,EAAQG,SAASC,IAAML,EAAKO,SANnC,GAQRC,EAAW,CACfC,MAAO,CACLC,SAAY,WACZL,IAAOF,GAETQ,QAAS,CACPD,SAAY,QACZL,IAfU,IAiBZO,IAAK,CACHF,SAAY,WACZL,IAAOC,IAIX9B,EAAEC,QAAQC,OAAO,WACf,IAAMC,EAAYH,EAAEC,QAAQE,YAExBA,EAAYwB,EACdH,EAAKa,IAAIL,EAASC,OACGH,EAAZ3B,EACTqB,EAAKa,IAAIL,EAASI,KAElBZ,EAAKa,IAAIL,EAASG,WAKxB,IACMG,EAAWtC,EAAE,aACbuC,EAAcvC,EAAE,eAChBwC,EAAcxC,EAAE,wBAEhByC,EAAgBzC,EAAE0C,IAAIH,EAAa,SAASI,GAChD,OAAO3C,EAAE2C,GAAMf,SAASC,MAGpBe,EAA6B5C,EAAE0C,IAAID,EAAe,SAASb,GAC/D,OAAOA,EAVS,KAqBlB5B,EAAEC,QAAQC,OAAO,WACf,IAAMC,EAAYH,EAAEC,QAAQE,YACtB0C,EAVqB,SAASC,EAAOC,GAC3C,IAAK,IAAIjF,EAAI,EAAGA,EAAIgF,EAAMpB,OAAS,EAAG5D,IACpC,GAAIiF,EAASD,EAAMhF,IAAMiF,GAAUD,EAAMhF,EAAI,GAAI,OAAOA,EAE1D,OAAIiF,EAASD,EAAMA,EAAMpB,OAAS,GAAWoB,EAAMpB,OAAS,GACpD,EAKesB,CAAqBJ,EAA4BzC,GAKxE,GAHAH,EAAEsC,GAAUhB,YAAY,UACxBtB,EAAEwC,GAAalB,YAAY,eAEH,IAApBuB,EAAuB,CACzB7C,EAAEsC,EAASO,IAAiBxB,SAAS,UAErC,IADA,IAAI4B,EAAWX,EAASO,GAAgBK,WACZ,QAArBD,EAASE,SACdnD,EAAEiD,GAAU5B,SAAS,cACrB4B,EAAWA,EAASC,WAAWA,eAMvCpD,SAAgB,WACVE,EAAEoD,WACJpD,EAAE,iBAAiBqD,KAAK,WACtBrD,EAAEsD,MAAMC,KAAK,OAAOF,KAAK,WACvBrD,EAAEsD,MAAME,KAAR,6BAAAC,OAA0CH,KAAKI,IAA/C,4CAAAD,OAA6FH,KAAKK,MAAlG,eAIJ3D,EAAE,aAAaoD,SAAS,CACtBQ,SAAU,YACVC,SAAS,MAKf/D,UAAiB,WAEf,IADA,IAAMgE,EAASjD,SAASkD,iBAAiB,YAChCjG,EAAI,EAAGA,EAAIgG,EAAOpC,OAAQ5D,IAAK,CACtC,IAAMkG,EAAQF,EAAOhG,GACfmG,EAAcD,EAAME,cACpBC,EAAYH,EAAMI,UAAUC,MAAM,MACA,KAApCF,EAAUA,EAAUzC,OAAS,IAAWyC,EAAUG,MAItD,IAHA,IAAMC,EAAaJ,EAAUzC,OAEzB8C,EAAe,GACV1G,EAAI,EAAGA,EAAIyG,EAAYzG,IAC9B0G,GAAY,qBAAAf,OAAyB3F,EAAI,EAA7B,UAId,IADA,IAAI2G,EAAW,GACN3G,EAAI,EAAGA,EAAIyG,EAAYzG,IAC9B2G,GAAQ,qBAAAhB,OAAyBU,EAAUrG,GAAnC,UAGVkG,EAAMU,WAAa,aACnB,IAAMC,EAAS9D,SAAS+D,cAAc,UACtCD,EAAOD,UAAYV,EAAMU,UACzBC,EAAOP,UAAP,6CAAAX,OAAgEe,EAAhE,qCAAAf,OAAgHgB,EAAhH,oCAEAR,EAAYC,cAAcW,aAAaF,EAAQV,KAInDnE,OAAc,WAEZ,IADA,IAAMgE,EAASjD,SAASkD,iBAAiB,wBAChCjG,EAAI,EAAGA,EAAIgG,EAAOpC,OAAQ5D,IAAK,CACtC,IAAMkG,EAAQF,EAAOhG,GACfgH,EAAiBd,EAAMe,cAAc,qBACrCC,EAAOF,EAAiBA,EAAeJ,UAAY,GACzDV,EAAMU,WAAa,IAAMM,IAI7BlF,IAAW,WACT,IAAMmF,EAAepE,SAASC,eAAe,YAC7C,GAAqB,OAAjBmE,EAAuB,CACzB,IAAMC,EAAMrE,SAASC,eAAe,mBACxB,OAARoE,EAEFD,EAAa/B,WAAWiC,YAAYF,IAEpC3B,KAAK8B,aAAaF,GAClB5B,KAAK+B,WACL/B,KAAKgC,cAKXxF,aAAoB,SAASoF,GAK3B,IAHA,IAEIK,EAFEC,EAAaN,EAAIO,SAAS,GAC5BC,EAAaF,EAEqB,IAA/BE,EAAWD,SAAS/D,QACoC,QAAvD6D,EAAOG,EAAWD,SAAS,GAAGA,SAAS,IAAItC,SACjDuC,EAAaH,EAGXG,IAAeF,GAAYN,EAAIL,aAAaa,EAAYF,IAG9D1F,SAAgB,WAEd,IADA,IAAM6F,EAAQ9E,SAASkD,iBAAiB,kCAC/BjG,EAAI,EAAGA,EAAI6H,EAAMjE,OAAQ5D,IAAK6H,EAAM7H,GAAG4G,WAAa,YAE7D,IAAK,IAAIkB,EAAM,EAAGA,GAAO,EAAGA,IAE1B,IADA,IAAMC,EAAUhF,SAASkD,iBAAiB,kBAAoB6B,GACrD9H,EAAI,EAAGA,EAAI+H,EAAQnE,OAAQ5D,IAAK,CACvC,IAAMgI,EAASD,EAAQ/H,GACvBgI,EAAO1B,UAAP,aAAAX,OAAgCqC,EAAOC,GAAvC,sEAAAtC,OAA8GqC,EAAO1B,aAK3HtE,UAAiB,WACf,GAAKG,OAAO+F,UAGZ,IADA,IAAMlC,EAASjD,SAASkD,iBAAiB,+BAChCjG,EAAI,EAAGA,EAAIgG,EAAOpC,OAAQ5D,IACjC,GAAKmC,OAAOgG,MAAQnI,EAAI,GAAM,EAA9B,CAEA,IAAMkG,EAAQF,EAAOhG,GACfmG,EAAchE,OAAOgG,KACrBjC,EAAME,cACNF,EAAME,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAE1FgC,EAAYrF,SAAS+D,cAAc,OACnCmB,EAAE,yBAAAtC,OAA4B3F,GACpCoI,EAAUH,GAAKA,EACfG,EAAUxB,UAAY,eACtBT,EAAYC,cAAcW,aAAaqB,EAAWjC,GAElC+B,UAAUG,MAAMnC,EAAMoC,WAAW,GAAGC,WAC5CC,QAAQP,EAAI9F,OAAOsG,yBAA2BtG,OAAOsG,yBAA2B,MAI5FzG,SAAgB,WACd,GAAKG,OAAOuG,QAGZ,IADA,IAAM1C,EAASjD,SAASkD,iBAAiB,8BAChCjG,EAAI,EAAGA,EAAIgG,EAAOpC,OAAQ5D,IACjC,GAAKmC,OAAOgG,MAAQnI,EAAI,GAAM,EAA9B,CAEA,IAAMkG,EAAQF,EAAOhG,GACfmG,EAAchE,OAAOgG,KACrBjC,EAAME,cACNF,EAAME,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAE1FgC,EAAYrF,SAAS+D,cAAc,OACnCmB,EAAE,wBAAAtC,OAA2B3F,GACnCoI,EAAUH,GAAKA,EACfG,EAAUxB,UAAY,eACtBT,EAAYC,cAAcW,aAAaqB,EAAWjC,GAElCuC,QAAQL,MAAMnC,EAAMoC,WAAW,GAAGC,WAC1CC,QAAQP,EAAI9F,OAAOwG,wBACrBxG,OAAOwG,wBACP,CAACC,MAAO,aAIlB5G,gBAAuB,WAErB,IADA,IAAM6G,EAAS9F,SAASkD,iBAAiB,yBAChCjG,EAAI,EAAGA,EAAI6I,EAAOjF,OAAQ5D,IAAK,CACtC,IAAM8I,EAAQD,EAAO7I,GACf+I,EAAUhG,SAAS+D,cAAc,OACvCiC,EAAQnC,UAAY,gBACpBkC,EAAM1C,cAAcW,aAAagC,EAASD,GAC1CC,EAAQC,YAAYF,WC/QxB5G,EAAEa,UAAUkG,MAAM,WAChBjH,EAAKkH,YACLlH,EAAKmH,eACLnH,EAAKoF,MACLpF,EAAKsD,aAGPtD,EAAKoH,kBACLpH,EAAKkG,YACLlG,EAAKqH,WAEDlH,OAAOgG,MACTA,KAAKmB,mBACLtH,EAAKuH,aAELvH,EAAKwH","file":"even.ece58db6.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","'use strict';\r\n\r\nconst Even = {};\r\n\r\nEven.backToTop = function() {\r\n const $backToTop = $('#back-to-top');\r\n\r\n $(window).scroll(function() {\r\n if ($(window).scrollTop() > 100) {\r\n $backToTop.fadeIn(1000);\r\n } else {\r\n $backToTop.fadeOut(1000);\r\n }\r\n });\r\n\r\n $backToTop.click(function() {\r\n $('body,html').animate({scrollTop: 0});\r\n });\r\n};\r\n\r\nEven.mobileNavbar = function() {\r\n const $mobileNav = $('#mobile-navbar');\r\n const $mobileNavIcon = $('.mobile-navbar-icon');\r\n const slideout = new Slideout({\r\n 'panel': document.getElementById('mobile-panel'),\r\n 'menu': document.getElementById('mobile-menu'),\r\n 'padding': 180,\r\n 'tolerance': 70,\r\n });\r\n slideout.disableTouch();\r\n\r\n $mobileNavIcon.click(function() {\r\n slideout.toggle();\r\n });\r\n\r\n slideout.on('beforeopen', function() {\r\n $mobileNav.addClass('fixed-open');\r\n $mobileNavIcon.addClass('icon-click').removeClass('icon-out');\r\n });\r\n\r\n slideout.on('beforeclose', function() {\r\n $mobileNav.removeClass('fixed-open');\r\n $mobileNavIcon.addClass('icon-out').removeClass('icon-click');\r\n });\r\n\r\n $('#mobile-panel').on('touchend', function() {\r\n slideout.isOpen() && $mobileNavIcon.click();\r\n });\r\n};\r\n\r\nEven._initToc = function() {\r\n const SPACING = 20;\r\n const $toc = $('.post-toc');\r\n const $footer = $('.post-footer');\r\n\r\n if ($toc.length) {\r\n const minScrollTop = $toc.offset().top - SPACING;\r\n const maxScrollTop = $footer.offset().top - $toc.height() - SPACING;\r\n\r\n const tocState = {\r\n start: {\r\n 'position': 'absolute',\r\n 'top': minScrollTop,\r\n },\r\n process: {\r\n 'position': 'fixed',\r\n 'top': SPACING,\r\n },\r\n end: {\r\n 'position': 'absolute',\r\n 'top': maxScrollTop,\r\n },\r\n };\r\n\r\n $(window).scroll(function() {\r\n const scrollTop = $(window).scrollTop();\r\n\r\n if (scrollTop < minScrollTop) {\r\n $toc.css(tocState.start);\r\n } else if (scrollTop > maxScrollTop) {\r\n $toc.css(tocState.end);\r\n } else {\r\n $toc.css(tocState.process);\r\n }\r\n });\r\n }\r\n\r\n const HEADERFIX = 30;\r\n const $toclink = $('.toc-link');\r\n const $headerlink = $('.headerlink');\r\n const $tocLinkLis = $('.post-toc-content li');\r\n\r\n const headerlinkTop = $.map($headerlink, function(link) {\r\n return $(link).offset().top;\r\n });\r\n\r\n const headerLinksOffsetForSearch = $.map(headerlinkTop, function(offset) {\r\n return offset - HEADERFIX;\r\n });\r\n\r\n const searchActiveTocIndex = function(array, target) {\r\n for (let i = 0; i < array.length - 1; i++) {\r\n if (target > array[i] && target <= array[i + 1]) return i;\r\n }\r\n if (target > array[array.length - 1]) return array.length - 1;\r\n return -1;\r\n };\r\n\r\n $(window).scroll(function() {\r\n const scrollTop = $(window).scrollTop();\r\n const activeTocIndex = searchActiveTocIndex(headerLinksOffsetForSearch, scrollTop);\r\n\r\n $($toclink).removeClass('active');\r\n $($tocLinkLis).removeClass('has-active');\r\n\r\n if (activeTocIndex !== -1) {\r\n $($toclink[activeTocIndex]).addClass('active');\r\n let ancestor = $toclink[activeTocIndex].parentNode;\r\n while (ancestor.tagName !== 'NAV') {\r\n $(ancestor).addClass('has-active');\r\n ancestor = ancestor.parentNode.parentNode;\r\n }\r\n }\r\n });\r\n};\r\n\r\nEven.fancybox = function() {\r\n if ($.fancybox) {\r\n $('.post-content').each(function() {\r\n $(this).find('img').each(function() {\r\n $(this).wrap(``);\r\n });\r\n });\r\n\r\n $('.fancybox').fancybox({\r\n selector: '.fancybox',\r\n protect: true,\r\n });\r\n }\r\n};\r\n\r\nEven.highlight = function() {\r\n const blocks = document.querySelectorAll('pre code');\r\n for (let i = 0; i < blocks.length; i++) {\r\n const block = blocks[i];\r\n const rootElement = block.parentElement;\r\n const lineCodes = block.innerHTML.split(/\\n/);\r\n if (lineCodes[lineCodes.length - 1] === '') lineCodes.pop();\r\n const lineLength = lineCodes.length;\r\n\r\n let codeLineHtml = '';\r\n for (let i = 0; i < lineLength; i++) {\r\n codeLineHtml += `
${i + 1}
`;\r\n }\r\n\r\n let codeHtml = '';\r\n for (let i = 0; i < lineLength; i++) {\r\n codeHtml += `
${lineCodes[i]}
`;\r\n }\r\n\r\n block.className += ' highlight';\r\n const figure = document.createElement('figure');\r\n figure.className = block.className;\r\n figure.innerHTML = `
${codeLineHtml}
${codeHtml}
`;\r\n\r\n rootElement.parentElement.replaceChild(figure, rootElement);\r\n }\r\n};\r\n\r\nEven.chroma = function() {\r\n const blocks = document.querySelectorAll('.highlight > .chroma');\r\n for (let i = 0; i < blocks.length; i++) {\r\n const block = blocks[i];\r\n const afterHighLight = block.querySelector('pre.chroma > code');\r\n const lang = afterHighLight ? afterHighLight.className : '';\r\n block.className += ' ' + lang;\r\n }\r\n};\r\n\r\nEven.toc = function() {\r\n const tocContainer = document.getElementById('post-toc');\r\n if (tocContainer !== null) {\r\n const toc = document.getElementById('TableOfContents');\r\n if (toc === null) {\r\n // toc = true, but there are no headings\r\n tocContainer.parentNode.removeChild(tocContainer);\r\n } else {\r\n this._refactorToc(toc);\r\n this._linkToc();\r\n this._initToc();\r\n }\r\n }\r\n};\r\n\r\nEven._refactorToc = function(toc) {\r\n // when headings do not start with `h1`\r\n const oldTocList = toc.children[0];\r\n let newTocList = oldTocList;\r\n let temp;\r\n while (newTocList.children.length === 1\r\n && (temp = newTocList.children[0].children[0]).tagName === 'UL') {\r\n newTocList = temp;\r\n }\r\n\r\n if (newTocList !== oldTocList) toc.replaceChild(newTocList, oldTocList);\r\n};\r\n\r\nEven._linkToc = function() {\r\n const links = document.querySelectorAll('#TableOfContents a:first-child');\r\n for (let i = 0; i < links.length; i++) links[i].className += ' toc-link';\r\n\r\n for (let num = 1; num <= 6; num++) {\r\n const headers = document.querySelectorAll('.post-content>h' + num);\r\n for (let i = 0; i < headers.length; i++) {\r\n const header = headers[i];\r\n header.innerHTML = `${header.innerHTML}`;\r\n }\r\n }\r\n};\r\n\r\nEven.flowchart = function() {\r\n if (!window.flowchart) return;\r\n\r\n const blocks = document.querySelectorAll('pre code.language-flowchart');\r\n for (let i = 0; i < blocks.length; i++) {\r\n if (!window.hljs && i % 2 === 0) continue;\r\n\r\n const block = blocks[i];\r\n const rootElement = window.hljs\r\n ? block.parentElement\r\n : block.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;\r\n\r\n const container = document.createElement('div');\r\n const id = `js-flowchart-diagrams-${i}`;\r\n container.id = id;\r\n container.className = 'align-center';\r\n rootElement.parentElement.replaceChild(container, rootElement);\r\n\r\n const diagram = flowchart.parse(block.childNodes[0].nodeValue);\r\n diagram.drawSVG(id, window.flowchartDiagramsOptions ? window.flowchartDiagramsOptions : {});\r\n }\r\n};\r\n\r\nEven.sequence = function() {\r\n if (!window.Diagram) return;\r\n\r\n const blocks = document.querySelectorAll('pre code.language-sequence');\r\n for (let i = 0; i < blocks.length; i++) {\r\n if (!window.hljs && i % 2 === 0) continue;\r\n\r\n const block = blocks[i];\r\n const rootElement = window.hljs\r\n ? block.parentElement\r\n : block.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;\r\n\r\n const container = document.createElement('div');\r\n const id = `js-sequence-diagrams-${i}`;\r\n container.id = id;\r\n container.className = 'align-center';\r\n rootElement.parentElement.replaceChild(container, rootElement);\r\n\r\n const diagram = Diagram.parse(block.childNodes[0].nodeValue);\r\n diagram.drawSVG(id, window.sequenceDiagramsOptions\r\n ? window.sequenceDiagramsOptions\r\n : {theme: 'simple'});\r\n }\r\n};\r\n\r\nEven.responsiveTable = function() {\r\n const tables = document.querySelectorAll('.post-content > table');\r\n for (let i = 0; i < tables.length; i++) {\r\n const table = tables[i];\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'table-wrapper';\r\n table.parentElement.replaceChild(wrapper, table);\r\n wrapper.appendChild(table);\r\n }\r\n};\r\n\r\nexport {Even}\r\n","import {Even} from './even.js'\r\n\r\nimport '../css/style.scss'\r\n\r\n$(document).ready(function () {\r\n Even.backToTop();\r\n Even.mobileNavbar();\r\n Even.toc();\r\n Even.fancybox();\r\n});\r\n\r\nEven.responsiveTable();\r\nEven.flowchart();\r\nEven.sequence();\r\n\r\nif (window.hljs) {\r\n hljs.initHighlighting();\r\n Even.highlight();\r\n} else {\r\n Even.chroma();\r\n}\r\n\r\n"],"sourceRoot":""} \ No newline at end of file