commit 88b45b19e53e88730b6c73eac91228b04b5fbeb8 Author: aoshiguchen Date: Wed Dec 18 21:16:43 2024 +0800 update diff --git a/404.html b/404.html new file mode 100644 index 00000000..009fce85 --- /dev/null +++ b/404.html @@ -0,0 +1,21 @@ + + + + + + 中微子代理 + + + + + + + + + + + +
404
这是一个Four-Oh-Four.
返回首页
+ + + diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..fbda1303 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +neutrino-proxy.dromara.org \ No newline at end of file diff --git a/assets/css/0.styles.b79d758c.css b/assets/css/0.styles.b79d758c.css new file mode 100644 index 00000000..b7e39047 --- /dev/null +++ b/assets/css/0.styles.b79d758c.css @@ -0,0 +1 @@ +@import url(//at.alicdn.com/t/font_1678482_4tbhmh589x.css);.code-copy{color:#aaa;fill:#aaa;font-size:14px;display:inline-block;cursor:pointer}div[class*=aside-code] aside .code-copy,div[class*=language-] pre .code-copy{position:absolute;z-index:1000;top:7px;right:35px;opacity:0;font-size:16px}div[class*=aside-code] aside:hover .code-copy,div[class*=language-] pre:hover .code-copy{opacity:1}.content pre,.content pre[class*=language-]{overflow-y:hidden}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{position:static!important}div[class~=language-text]:before{content:"text"}div[class~=language-yml]:before{content:"yml"}div[class*=language-] pre{-webkit-user-select:text;-moz-user-select:text;user-select:text}p code{-webkit-user-select:all;-moz-user-select:all;user-select:all}@keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}#message-container .message.move-in{animation:message-move-in .3s ease-in-out}@keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}#message-container .message.move-out{animation:message-move-out .3s ease-in-out;animation-fill-mode:forwards}#message-container .message{background:#fff;margin:10px 0;padding:0 10px;height:40px;box-shadow:0 0 10px 0 #ccc;font-size:14px;border-radius:3px;display:flex;align-items:center;transition:height .2s ease-in-out,margin .2s ease-in-out}#message-container{position:fixed;left:0;top:100px;right:0;display:flex;flex-direction:column;align-items:center}#message-container .message .text{color:#333;padding:0 20px 0 5px}.theme-code-block[data-v-4f1e9d0c]{display:none}.theme-code-block__active[data-v-4f1e9d0c]{display:block}.theme-code-block>pre[data-v-4f1e9d0c]{background-color:orange}@media (max-width:419px){.theme-code-group div[class*=language-][data-v-4f1e9d0c]{margin:0}}.theme-mode-light[data-v-2f5f1757]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-2f5f1757]::-moz-selection,.theme-mode-light code[class*=language-][data-v-2f5f1757] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-2f5f1757]::selection,.theme-mode-light code[class*=language-][data-v-2f5f1757] ::selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757]::selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-2f5f1757],.theme-mode-light .token.comment[data-v-2f5f1757],.theme-mode-light .token.doctype[data-v-2f5f1757],.theme-mode-light .token.prolog[data-v-2f5f1757]{color:#708090}.theme-mode-light .token.punctuation[data-v-2f5f1757]{color:#999}.theme-mode-light .namespace[data-v-2f5f1757]{opacity:.7}.theme-mode-light .token.boolean[data-v-2f5f1757],.theme-mode-light .token.constant[data-v-2f5f1757],.theme-mode-light .token.deleted[data-v-2f5f1757],.theme-mode-light .token.number[data-v-2f5f1757],.theme-mode-light .token.property[data-v-2f5f1757],.theme-mode-light .token.symbol[data-v-2f5f1757],.theme-mode-light .token.tag[data-v-2f5f1757]{color:#905}.theme-mode-light .token.attr-name[data-v-2f5f1757],.theme-mode-light .token.builtin[data-v-2f5f1757],.theme-mode-light .token.char[data-v-2f5f1757],.theme-mode-light .token.inserted[data-v-2f5f1757],.theme-mode-light .token.selector[data-v-2f5f1757],.theme-mode-light .token.string[data-v-2f5f1757]{color:#690}.theme-mode-light .language-css .token.string[data-v-2f5f1757],.theme-mode-light .style .token.string[data-v-2f5f1757],.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-2f5f1757],.theme-mode-light .token.attr-value[data-v-2f5f1757],.theme-mode-light .token.keyword[data-v-2f5f1757]{color:#07a}.theme-mode-light .token.class-name[data-v-2f5f1757],.theme-mode-light .token.function[data-v-2f5f1757]{color:#dd4a68}.theme-mode-light .token.important[data-v-2f5f1757],.theme-mode-light .token.regex[data-v-2f5f1757],.theme-mode-light .token.variable[data-v-2f5f1757]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-2f5f1757],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-2f5f1757]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-2f5f1757]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-2f5f1757]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-2f5f1757]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-2f5f1757]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-2f5f1757],.theme-mode-light .token.cdata[data-v-2f5f1757],.theme-mode-light .token.comment[data-v-2f5f1757],.theme-mode-light .token.doctype[data-v-2f5f1757],.theme-mode-light .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-light .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-light .token.attr-name[data-v-2f5f1757],.theme-mode-light .token.deleted[data-v-2f5f1757],.theme-mode-light .token.namespace[data-v-2f5f1757],.theme-mode-light .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-light .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-light .token.boolean[data-v-2f5f1757],.theme-mode-light .token.function[data-v-2f5f1757],.theme-mode-light .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-light .token.class-name[data-v-2f5f1757],.theme-mode-light .token.constant[data-v-2f5f1757],.theme-mode-light .token.property[data-v-2f5f1757],.theme-mode-light .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-light .token.atrule[data-v-2f5f1757],.theme-mode-light .token.builtin[data-v-2f5f1757],.theme-mode-light .token.important[data-v-2f5f1757],.theme-mode-light .token.keyword[data-v-2f5f1757],.theme-mode-light .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-2f5f1757],.theme-mode-light .token.char[data-v-2f5f1757],.theme-mode-light .token.regex[data-v-2f5f1757],.theme-mode-light .token.string[data-v-2f5f1757],.theme-mode-light .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-2f5f1757],.theme-mode-light .style .token.string[data-v-2f5f1757],.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{background:none}.theme-mode-light .token.bold[data-v-2f5f1757],.theme-mode-light .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-light .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-light .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-light .token.inserted[data-v-2f5f1757]{color:green}.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-2f5f1757],.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-2f5f1757],.theme-mode-dark .token.cdata[data-v-2f5f1757],.theme-mode-dark .token.comment[data-v-2f5f1757],.theme-mode-dark .token.doctype[data-v-2f5f1757],.theme-mode-dark .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-dark .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-2f5f1757],.theme-mode-dark .token.deleted[data-v-2f5f1757],.theme-mode-dark .token.namespace[data-v-2f5f1757],.theme-mode-dark .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-2f5f1757],.theme-mode-dark .token.function[data-v-2f5f1757],.theme-mode-dark .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-2f5f1757],.theme-mode-dark .token.constant[data-v-2f5f1757],.theme-mode-dark .token.property[data-v-2f5f1757],.theme-mode-dark .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-2f5f1757],.theme-mode-dark .token.builtin[data-v-2f5f1757],.theme-mode-dark .token.important[data-v-2f5f1757],.theme-mode-dark .token.keyword[data-v-2f5f1757],.theme-mode-dark .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-2f5f1757],.theme-mode-dark .token.char[data-v-2f5f1757],.theme-mode-dark .token.regex[data-v-2f5f1757],.theme-mode-dark .token.string[data-v-2f5f1757],.theme-mode-dark .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-dark .token.entity[data-v-2f5f1757],.theme-mode-dark .token.operator[data-v-2f5f1757],.theme-mode-dark .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-2f5f1757],.theme-mode-dark .style .token.string[data-v-2f5f1757],.theme-mode-dark .token.entity[data-v-2f5f1757],.theme-mode-dark .token.operator[data-v-2f5f1757],.theme-mode-dark .token.url[data-v-2f5f1757]{background:none}.theme-mode-dark .token.bold[data-v-2f5f1757],.theme-mode-dark .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-dark .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-dark .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-dark .token.inserted[data-v-2f5f1757]{color:green}.theme-mode-read[data-v-2f5f1757]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-2f5f1757],.theme-mode-read pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-read pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-2f5f1757],.theme-mode-read .token.cdata[data-v-2f5f1757],.theme-mode-read .token.comment[data-v-2f5f1757],.theme-mode-read .token.doctype[data-v-2f5f1757],.theme-mode-read .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-read .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-read .token.attr-name[data-v-2f5f1757],.theme-mode-read .token.deleted[data-v-2f5f1757],.theme-mode-read .token.namespace[data-v-2f5f1757],.theme-mode-read .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-read .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-read .token.boolean[data-v-2f5f1757],.theme-mode-read .token.function[data-v-2f5f1757],.theme-mode-read .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-read .token.class-name[data-v-2f5f1757],.theme-mode-read .token.constant[data-v-2f5f1757],.theme-mode-read .token.property[data-v-2f5f1757],.theme-mode-read .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-read .token.atrule[data-v-2f5f1757],.theme-mode-read .token.builtin[data-v-2f5f1757],.theme-mode-read .token.important[data-v-2f5f1757],.theme-mode-read .token.keyword[data-v-2f5f1757],.theme-mode-read .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-2f5f1757],.theme-mode-read .token.char[data-v-2f5f1757],.theme-mode-read .token.regex[data-v-2f5f1757],.theme-mode-read .token.string[data-v-2f5f1757],.theme-mode-read .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-read .token.entity[data-v-2f5f1757],.theme-mode-read .token.operator[data-v-2f5f1757],.theme-mode-read .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-2f5f1757],.theme-mode-read .style .token.string[data-v-2f5f1757],.theme-mode-read .token.entity[data-v-2f5f1757],.theme-mode-read .token.operator[data-v-2f5f1757],.theme-mode-read .token.url[data-v-2f5f1757]{background:none}.theme-mode-read .token.bold[data-v-2f5f1757],.theme-mode-read .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-read .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-read .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-read .token.inserted[data-v-2f5f1757]{color:green}.theme-code-group[data-v-2f5f1757],.theme-code-group__nav[data-v-2f5f1757]{background-color:var(--codeBg);padding-bottom:22px;border-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__nav[data-v-2f5f1757]{margin-bottom:-35px}.theme-code-group__ul[data-v-2f5f1757]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__li[data-v-2f5f1757],.theme-code-group__nav-tab[data-v-2f5f1757]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:var(--codeColor);font-weight:600;opacity:.85}.theme-code-group__nav-tab-active[data-v-2f5f1757]{border-bottom:1px solid #4274f4;opacity:1}.pre-blank[data-v-2f5f1757]{color:#4274f4}body .theme-vdoing-content code{color:var(--textLightenColor);padding:.25rem .5rem;margin:0;font-size:.9em;background-color:hsla(0,0%,39.2%,.08);border-radius:3px}body .theme-vdoing-content code .token.deleted{color:#ec5975}body .theme-vdoing-content code .token.inserted{color:#4274f4}body .theme-vdoing-content pre,body .theme-vdoing-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}body .theme-vdoing-content pre[class*=language-] code,body .theme-vdoing-content pre code{color:var(--codeColor);padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:var(--codeBg);border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.3)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative!important;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.8rem;color:hsla(0,0%,58.8%,.7)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:2.5rem;height:100%;background-color:rgba(0,0,0,.3)}div[class*=language-].line-numbers-mode pre{padding-left:3.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:2.5rem;text-align:center;color:hsla(0,0%,49.8%,.5);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:2.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--borderColor);background-color:var(--codeBg)}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:.2rem}.custom-block p{margin:0}.custom-block.danger,.custom-block.note,.custom-block.tip,.custom-block.warning{padding:.5rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983;color:#215d42}.custom-block.warning{background-color:#fff7d0;border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:var(--textColor)}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:var(--textColor)}.custom-block.note{background-color:#e8f5fa;border-color:#157bae;color:#0d4a68}.custom-block.right{color:var(--textColor);font-size:.9rem;text-align:right}.custom-block.theorem{margin:1rem 0;padding:.8rem 1.5rem;border-radius:2px;background-color:var(--customBlockBg)}.custom-block.theorem .title{font-weight:700;margin:.5rem 0}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1em 0;padding:1.6em;background-color:var(--customBlockBg)}.custom-block.details p{margin:.8rem 0}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.custom-block.details summary:hover{color:#4274f4}.theme-mode-dark .custom-block.warning{background-color:rgba(255,247,208,.2);color:#e7c000}.theme-mode-dark .custom-block.warning .custom-block-title{color:#ffdc2f}.theme-mode-dark .custom-block.tip{background-color:rgba(243,245,247,.2);color:#42b983}.theme-mode-dark .custom-block.danger{background-color:rgba(255,230,230,.4);color:maroon}.theme-mode-dark .custom-block.danger a{color:#4274f4}.theme-mode-dark .custom-block.note{background-color:rgba(243,245,247,.2);color:#157bae}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-vdoing-content:not(.custom){max-width:860px}.table-of-contents .badge{vertical-align:middle}.center-container{text-align:center}.center-container>h1,.center-container>h2,.center-container>h3,.center-container>h4,.center-container>h5,.center-container>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.center-container>h1 a.header-anchor,.center-container>h2 a.header-anchor,.center-container>h3 a.header-anchor,.center-container>h4 a.header-anchor,.center-container>h5 a.header-anchor,.center-container>h6 a.header-anchor{float:none;padding-right:0;margin-left:-.9rem}.cardListContainer{margin:.7rem 0}.cardListContainer>:not(.card-list){display:none}.cardListContainer .card-list{margin:-.35rem;display:flex;flex-wrap:wrap;align-items:flex-start}.cardListContainer .card-list .card-item{width:calc(33.33333% - .7rem);margin:.35rem;background:var(--bodyBg);border-radius:3px;color:var(--textColor);display:flex;box-shadow:1px 1px 2px 0 rgba(0,0,0,.06);transition:all .4s}.cardListContainer .card-list .card-item:hover{text-decoration:none;box-shadow:0 10px 20px -10px var(--randomColor,rgba(0,0,0,.15));transform:translateY(-3px) scale(1.01)}.cardListContainer .card-list .card-item:hover img{box-shadow:3px 2px 7px rgba(0,0,0,.15)}.cardListContainer .card-list .card-item:hover div p{text-shadow:3px 2px 5px rgba(0,0,0,.15)}.cardListContainer .card-list .card-item img{width:60px;height:60px;border-radius:50%;border:2px solid #fff;margin:1rem 0 1rem 1rem;box-shadow:3px 2px 5px rgba(0,0,0,.08);transition:all .4s}.cardListContainer .card-list .card-item div{flex:1;display:inline-block;float:right;padding:1rem 0}.cardListContainer .card-list .card-item div p{margin:0;padding:0 1rem;transition:text-shadow .4s;text-align:center}.cardListContainer .card-list .card-item div .name{margin:.2rem 0 .3rem}.cardListContainer .card-list .card-item div .desc{font-size:.8rem;line-height:1.1rem;opacity:.8;margin-bottom:.2rem}.cardListContainer .card-list .card-item.row-1{width:calc(100% - .7rem)}.cardListContainer .card-list .card-item.row-1 img{margin-left:2rem}.cardListContainer .card-list .card-item.row-2{width:calc(50% - .7rem)}.cardListContainer .card-list .card-item.row-2 img{margin-left:1.5rem}.cardListContainer .card-list .card-item.row-3{width:calc(33.33333% - .7rem)}.cardListContainer .card-list .card-item.row-4{width:calc(25% - .7rem)}.cardImgListContainer{margin:1rem 0}.cardImgListContainer>:not(.card-list){display:none}.cardImgListContainer .card-list{margin:-.5rem;display:flex;flex-wrap:wrap;align-items:flex-start}.cardImgListContainer .card-list .card-item{width:calc(33.33333% - 1rem);margin:.5rem;background:var(--mainBg);border:1px solid rgba(0,0,0,.1);box-sizing:border-box;border-radius:3px;overflow:hidden;color:var(--textColor);box-shadow:2px 2px 10px rgba(0,0,0,.04);display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:stretch;transition:all .4s}.cardImgListContainer .card-list .card-item:hover{box-shadow:1px 1px 20px rgba(0,0,0,.1);transform:translateY(-3px)}.cardImgListContainer .card-list .card-item .box-img{overflow:hidden;position:relative;background:#eee}.cardImgListContainer .card-list .card-item .box-img img{display:block;width:100%;height:100%;transition:all .3s}.cardImgListContainer .card-list .card-item a{color:var(--textColor);transition:color .3s}.cardImgListContainer .card-list .card-item a:hover{text-decoration:none}.cardImgListContainer .card-list .card-item .box-info{padding:.8rem 1rem}.cardImgListContainer .card-list .card-item .box-info p{margin:0}.cardImgListContainer .card-list .card-item .box-info .desc{margin-top:.3rem;opacity:.8;font-size:.9rem;line-height:1.1rem;overflow:hidden;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.cardImgListContainer .card-list .card-item .box-footer{overflow:hidden;padding:.8rem 1rem;border-top:1px solid rgba(0,0,0,.1)}.cardImgListContainer .card-list .card-item .box-footer img{width:1.8rem;height:1.8rem;border-radius:50%;float:left}.cardImgListContainer .card-list .card-item .box-footer span{line-height:1.8rem;float:left;margin-left:.6rem;font-size:.8rem}.cardImgListContainer .card-list .card-item.row-1{width:calc(100% - 1rem)}.cardImgListContainer .card-list .card-item.row-2{width:calc(50% - 1rem)}.cardImgListContainer .card-list .card-item.row-3{width:calc(33.33333% - 1rem)}.cardImgListContainer .card-list .card-item.row-4{width:calc(25% - 1rem)}.theme-mode-dark .cardImgListContainer .card-list .card-item,.theme-mode-dark .cardImgListContainer .card-list .card-item .box-footer{border-color:var(--borderColor)}@media (max-width:900px){.cardListContainer .card-list .card-item.row-4{width:calc(33.33333% - .7rem)}.cardImgListContainer .card-list .card-item.row-4{width:calc(33.33333% - 1rem)}}@media (max-width:720px){.cardListContainer .card-list .card-item.row-3,.cardListContainer .card-list .card-item.row-4{width:calc(50% - .7rem)}.cardListContainer .card-list .card-item.row-3 img,.cardListContainer .card-list .card-item.row-4 img{margin-left:1.5rem}.cardImgListContainer .card-list .card-item.row-3,.cardImgListContainer .card-list .card-item.row-4{width:calc(50% - 1rem)}}@media (max-width:500px){.cardListContainer .card-list .card-item.row-1,.cardListContainer .card-list .card-item.row-2,.cardListContainer .card-list .card-item.row-3,.cardListContainer .card-list .card-item.row-4{width:calc(100% - .7rem)}.cardListContainer .card-list .card-item.row-1 img,.cardListContainer .card-list .card-item.row-2 img,.cardListContainer .card-list .card-item.row-3 img,.cardListContainer .card-list .card-item.row-4 img{margin-left:1.5rem}.cardImgListContainer .card-list .card-item.row-1,.cardImgListContainer .card-list .card-item.row-2,.cardImgListContainer .card-list .card-item.row-3,.cardImgListContainer .card-list .card-item.row-4{width:calc(100% - 1rem)}}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-size:16px;color:#2c3e50;background:var(--bodyBg)}a,button,input{outline:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-focus-ring-color:transparent}@media (min-width:719px){::-webkit-scrollbar{width:6px;height:5px}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.15);-webkit-border-radius:3px}::-webkit-scrollbar-thumb:vertical{height:5px;background-color:rgba(0,0,0,.28);-webkit-border-radius:3px}::-webkit-scrollbar-thumb:horizontal{width:5px;background-color:rgba(0,0,0,.28);-webkit-border-radius:3px}}.card-box{border-radius:5px;background:var(--mainBg);box-shadow:0 0 4px 0 rgba(0,0,0,.1);transition:box-shadow .5s}.card-box:hover{box-shadow:0 1px 15px 0 rgba(0,0,0,.1)}@media (max-width:719px){.theme-style-line{margin-left:-1px;margin-right:-1px}}.theme-style-line .card-box{box-shadow:0 0;border:1px solid var(--borderColor)}.blur{-webkit-backdrop-filter:saturate(200%) blur(20px);backdrop-filter:saturate(200%) blur(20px)}.custom-page{min-height:calc(100vh - 3.6rem);padding-top:3.6rem;padding-bottom:.9rem}.custom-page .theme-vdoing-wrapper{margin:0 auto}body .search-box input{background-color:transparent;color:var(--textColor);border:1px solid var(--borderColor,#ccc)}@media (max-width:959px){body .search-box input{border-color:transparent}}.page{transition:padding .2s ease;padding-left:.8rem}.navbar{position:fixed;z-index:20;top:0;left:0;right:0;height:3.6rem;background-color:var(--blurBg);box-sizing:border-box;box-shadow:0 2px 5px rgba(0,0,0,.06)}.sidebar-mask{top:0;width:100vw;height:100vh}.sidebar-hover-trigger,.sidebar-mask{position:fixed;z-index:12;left:0;display:none}.sidebar-hover-trigger{top:8.1rem;bottom:0;width:24px}.sidebar{font-size:16px;background-color:var(--sidebarBg);width:18rem;position:fixed;z-index:13;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid var(--borderColor);overflow-y:auto;transform:translateX(-100%);transition:transform .2s}@media (max-width:719px){.sidebar{background-color:var(--mainBg)}}.theme-vdoing-content:not(.custom){word-wrap:break-word}.theme-vdoing-content:not(.custom) a:hover{text-decoration:underline}.theme-vdoing-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-vdoing-content:not(.custom) img{max-width:100%}.theme-vdoing-content.custom{padding:0;margin:0}.theme-vdoing-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#4274f4}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;opacity:.75;border-left:.2rem solid hsla(0,0%,39.2%,.3);margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-vdoing-content:not(.custom)>h1,.theme-vdoing-content:not(.custom)>h2,.theme-vdoing-content:not(.custom)>h3,.theme-vdoing-content:not(.custom)>h4,.theme-vdoing-content:not(.custom)>h5,.theme-vdoing-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-vdoing-content:not(.custom)>h1:first-child,.theme-vdoing-content:not(.custom)>h2:first-child,.theme-vdoing-content:not(.custom)>h3:first-child,.theme-vdoing-content:not(.custom)>h4:first-child,.theme-vdoing-content:not(.custom)>h5:first-child,.theme-vdoing-content:not(.custom)>h6:first-child{margin-bottom:1rem}.theme-vdoing-content:not(.custom)>h1:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h1:first-child+p,.theme-vdoing-content:not(.custom)>h1:first-child+pre,.theme-vdoing-content:not(.custom)>h2:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h2:first-child+p,.theme-vdoing-content:not(.custom)>h2:first-child+pre,.theme-vdoing-content:not(.custom)>h3:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h3:first-child+p,.theme-vdoing-content:not(.custom)>h3:first-child+pre,.theme-vdoing-content:not(.custom)>h4:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h4:first-child+p,.theme-vdoing-content:not(.custom)>h4:first-child+pre,.theme-vdoing-content:not(.custom)>h5:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h5:first-child+p,.theme-vdoing-content:not(.custom)>h5:first-child+pre,.theme-vdoing-content:not(.custom)>h6:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h6:first-child+p,.theme-vdoing-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}.theme-vdoing-content:not(.custom)>.custom-block:first-child,.theme-vdoing-content:not(.custom)>p:first-child,.theme-vdoing-content:not(.custom)>pre:first-child{margin-top:2rem}h1{font-size:1.9rem}.theme-vdoing-content:not(.custom)>h1:first-child{display:none}h2{font-size:1.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--borderColor)}h3{font-size:1.35rem}.page h4{font-size:1.25rem}.page h5{font-size:1.15rem}.page h6{font-size:1.05rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid var(--borderColor)}table{border-collapse:collapse;margin:1rem 0;overflow-x:auto;width:100%;display:inline-table}@media (max-width:719px){table{display:block}}tr{border-top:1px solid var(--borderColor)}tr:nth-child(2n){background-color:hsla(0,0%,58.8%,.1)}td,th{border:1px solid var(--borderColor);padding:.6em 1em}@media (max-width:719px){td,th{padding:.3em .5em}}td a,th a{word-break:break-all}.theme-container{color:var(--textColor);min-height:100vh}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-vdoing-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px}}@media (max-width:719px){.sidebar{width:17.099999999999998rem}}@media (min-width:720px) and (max-width:959px){.sidebar{width:16.2rem}.theme-container.sidebar-open .page{padding-left:17rem!important}}@media (max-width:719px){.sidebar{top:0;height:100vh;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-vdoing-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}@media (min-width:720px){.theme-container .sidebar-hover-trigger{display:block}.theme-container .sidebar-hover-trigger:hover~.sidebar,.theme-container:not(.sidebar-open) .sidebar-hover-trigger~.sidebar:hover{transform:translateX(0);z-index:100}.theme-container.sidebar-open .sidebar-mask{display:none}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.sidebar-open .sidebar-button{left:18rem}.theme-container.sidebar-open .page{padding-left:18.8rem;padding-right:.8rem}.theme-container.sidebar-open .sidebar-hover-trigger{display:none}.theme-container.have-rightmenu .page{padding-right:250px}.theme-container.no-sidebar .page{padding-left:0!important}.theme-container.no-sidebar .sidebar-hover-trigger{display:none}.theme-container.hide-navbar .sidebar-hover-trigger{top:4.5rem}.theme-container.hide-navbar .sidebar{top:0}.theme-container.no-sidebar .sidebar-button{display:none}}@media print{.buttons,.navbar,.sidebar{display:none}.page{padding-top:0!important}}@media (min-width:720px) and (max-width:959px){.theme-container.sidebar-open:not(.on-sidebar) .sidebar-button{left:12.6rem}}.home-wrapper .banner .banner-conent .hero h1{font-size:2.8rem!important}table{width:auto}.card-box,.page>:not(.footer){box-shadow:none!important}@media (min-width:940px){.page{padding-top:3.6rem!important}}.home-wrapper .banner .banner-conent{padding:0 2.9rem;box-sizing:border-box}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a h2{margin-top:2rem;font-size:1.2rem!important}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a p{padding:0 1rem}.gt-container .gt-ico-tip:after{content:"。( Win + . ) or ( ⌃ + ⌘ + ␣ ) open Emoji";color:#999}.gt-container .gt-meta{border-color:var(--borderColor)!important}.gt-container .gt-comments-null{color:var(--textColor);opacity:.5}.gt-container .gt-header-textarea{color:var(--textColor);background:hsla(0,0%,70.6%,.1)!important}.gt-container .gt-btn{border-color:#4274f4!important;background-color:#4274f4!important}.gt-container .gt-btn-preview{background-color:hsla(0,0%,100%,0)!important;color:#4274f4!important}.gt-container a{color:#4274f4!important}.gt-container .gt-svg svg{fill:#4274f4!important}.gt-container .gt-comment-admin .gt-comment-content,.gt-container .gt-comment-content{background-color:hsla(0,0%,58.8%,.1)!important}.gt-container .gt-comment-admin .gt-comment-content:hover,.gt-container .gt-comment-content:hover{box-shadow:0 0 25px hsla(0,0%,58.8%,.5)!important}.gt-container .gt-comment-admin .gt-comment-content .gt-comment-body,.gt-container .gt-comment-content .gt-comment-body{color:var(--textColor)!important}.qq{position:relative}.qq:after{content:"可撩";background:#4274f4;color:#fff;padding:0 5px;border-radius:10px;font-size:12px;position:absolute;top:-4px;right:-35px;transform:scale(.85)}body .vuepress-plugin-demo-block__wrapper,body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__display{border-color:hsla(0,0%,62.7%,.3)}body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__expand:before{border-top-color:#4274f4!important;border-bottom-color:#4274f4!important}body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover svg{fill:#4274f4!important}.suggestions{overflow:auto;max-height:calc(100vh - 6rem)}@media (max-width:719px){.suggestions{width:90vw;min-width:90vw!important;margin-right:-20px}}.suggestions .highlight{color:#4274f4;font-weight:700}#nprogress{pointer-events:none}#nprogress .bar{background:#4274f4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #4274f4,0 0 5px #4274f4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#4274f4 transparent transparent #4274f4;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.theme-mode-light[data-v-439bb2a8]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-439bb2a8]::-moz-selection,.theme-mode-light code[class*=language-][data-v-439bb2a8] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-439bb2a8]::selection,.theme-mode-light code[class*=language-][data-v-439bb2a8] ::selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8]::selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-439bb2a8],.theme-mode-light .token.comment[data-v-439bb2a8],.theme-mode-light .token.doctype[data-v-439bb2a8],.theme-mode-light .token.prolog[data-v-439bb2a8]{color:#708090}.theme-mode-light .token.punctuation[data-v-439bb2a8]{color:#999}.theme-mode-light .namespace[data-v-439bb2a8]{opacity:.7}.theme-mode-light .token.boolean[data-v-439bb2a8],.theme-mode-light .token.constant[data-v-439bb2a8],.theme-mode-light .token.deleted[data-v-439bb2a8],.theme-mode-light .token.number[data-v-439bb2a8],.theme-mode-light .token.property[data-v-439bb2a8],.theme-mode-light .token.symbol[data-v-439bb2a8],.theme-mode-light .token.tag[data-v-439bb2a8]{color:#905}.theme-mode-light .token.attr-name[data-v-439bb2a8],.theme-mode-light .token.builtin[data-v-439bb2a8],.theme-mode-light .token.char[data-v-439bb2a8],.theme-mode-light .token.inserted[data-v-439bb2a8],.theme-mode-light .token.selector[data-v-439bb2a8],.theme-mode-light .token.string[data-v-439bb2a8]{color:#690}.theme-mode-light .language-css .token.string[data-v-439bb2a8],.theme-mode-light .style .token.string[data-v-439bb2a8],.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-439bb2a8],.theme-mode-light .token.attr-value[data-v-439bb2a8],.theme-mode-light .token.keyword[data-v-439bb2a8]{color:#07a}.theme-mode-light .token.class-name[data-v-439bb2a8],.theme-mode-light .token.function[data-v-439bb2a8]{color:#dd4a68}.theme-mode-light .token.important[data-v-439bb2a8],.theme-mode-light .token.regex[data-v-439bb2a8],.theme-mode-light .token.variable[data-v-439bb2a8]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-439bb2a8],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-439bb2a8]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-439bb2a8]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-439bb2a8]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-439bb2a8]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-439bb2a8]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-439bb2a8],.theme-mode-light .token.cdata[data-v-439bb2a8],.theme-mode-light .token.comment[data-v-439bb2a8],.theme-mode-light .token.doctype[data-v-439bb2a8],.theme-mode-light .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-light .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-light .token.attr-name[data-v-439bb2a8],.theme-mode-light .token.deleted[data-v-439bb2a8],.theme-mode-light .token.namespace[data-v-439bb2a8],.theme-mode-light .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-light .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-light .token.boolean[data-v-439bb2a8],.theme-mode-light .token.function[data-v-439bb2a8],.theme-mode-light .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-light .token.class-name[data-v-439bb2a8],.theme-mode-light .token.constant[data-v-439bb2a8],.theme-mode-light .token.property[data-v-439bb2a8],.theme-mode-light .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-light .token.atrule[data-v-439bb2a8],.theme-mode-light .token.builtin[data-v-439bb2a8],.theme-mode-light .token.important[data-v-439bb2a8],.theme-mode-light .token.keyword[data-v-439bb2a8],.theme-mode-light .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-439bb2a8],.theme-mode-light .token.char[data-v-439bb2a8],.theme-mode-light .token.regex[data-v-439bb2a8],.theme-mode-light .token.string[data-v-439bb2a8],.theme-mode-light .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-439bb2a8],.theme-mode-light .style .token.string[data-v-439bb2a8],.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{background:none}.theme-mode-light .token.bold[data-v-439bb2a8],.theme-mode-light .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-light .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-light .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-light .token.inserted[data-v-439bb2a8]{color:green}.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-439bb2a8],.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-439bb2a8],.theme-mode-dark .token.cdata[data-v-439bb2a8],.theme-mode-dark .token.comment[data-v-439bb2a8],.theme-mode-dark .token.doctype[data-v-439bb2a8],.theme-mode-dark .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-dark .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-439bb2a8],.theme-mode-dark .token.deleted[data-v-439bb2a8],.theme-mode-dark .token.namespace[data-v-439bb2a8],.theme-mode-dark .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-439bb2a8],.theme-mode-dark .token.function[data-v-439bb2a8],.theme-mode-dark .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-439bb2a8],.theme-mode-dark .token.constant[data-v-439bb2a8],.theme-mode-dark .token.property[data-v-439bb2a8],.theme-mode-dark .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-439bb2a8],.theme-mode-dark .token.builtin[data-v-439bb2a8],.theme-mode-dark .token.important[data-v-439bb2a8],.theme-mode-dark .token.keyword[data-v-439bb2a8],.theme-mode-dark .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-439bb2a8],.theme-mode-dark .token.char[data-v-439bb2a8],.theme-mode-dark .token.regex[data-v-439bb2a8],.theme-mode-dark .token.string[data-v-439bb2a8],.theme-mode-dark .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-dark .token.entity[data-v-439bb2a8],.theme-mode-dark .token.operator[data-v-439bb2a8],.theme-mode-dark .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-439bb2a8],.theme-mode-dark .style .token.string[data-v-439bb2a8],.theme-mode-dark .token.entity[data-v-439bb2a8],.theme-mode-dark .token.operator[data-v-439bb2a8],.theme-mode-dark .token.url[data-v-439bb2a8]{background:none}.theme-mode-dark .token.bold[data-v-439bb2a8],.theme-mode-dark .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-dark .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-dark .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-dark .token.inserted[data-v-439bb2a8]{color:green}.theme-mode-read[data-v-439bb2a8]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-439bb2a8],.theme-mode-read pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-read pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-439bb2a8],.theme-mode-read .token.cdata[data-v-439bb2a8],.theme-mode-read .token.comment[data-v-439bb2a8],.theme-mode-read .token.doctype[data-v-439bb2a8],.theme-mode-read .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-read .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-read .token.attr-name[data-v-439bb2a8],.theme-mode-read .token.deleted[data-v-439bb2a8],.theme-mode-read .token.namespace[data-v-439bb2a8],.theme-mode-read .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-read .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-read .token.boolean[data-v-439bb2a8],.theme-mode-read .token.function[data-v-439bb2a8],.theme-mode-read .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-read .token.class-name[data-v-439bb2a8],.theme-mode-read .token.constant[data-v-439bb2a8],.theme-mode-read .token.property[data-v-439bb2a8],.theme-mode-read .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-read .token.atrule[data-v-439bb2a8],.theme-mode-read .token.builtin[data-v-439bb2a8],.theme-mode-read .token.important[data-v-439bb2a8],.theme-mode-read .token.keyword[data-v-439bb2a8],.theme-mode-read .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-439bb2a8],.theme-mode-read .token.char[data-v-439bb2a8],.theme-mode-read .token.regex[data-v-439bb2a8],.theme-mode-read .token.string[data-v-439bb2a8],.theme-mode-read .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-read .token.entity[data-v-439bb2a8],.theme-mode-read .token.operator[data-v-439bb2a8],.theme-mode-read .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-439bb2a8],.theme-mode-read .style .token.string[data-v-439bb2a8],.theme-mode-read .token.entity[data-v-439bb2a8],.theme-mode-read .token.operator[data-v-439bb2a8],.theme-mode-read .token.url[data-v-439bb2a8]{background:none}.theme-mode-read .token.bold[data-v-439bb2a8],.theme-mode-read .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-read .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-read .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-read .token.inserted[data-v-439bb2a8]{color:green}.theme-vdoing-content[data-v-439bb2a8]{margin:3rem auto;padding:1.5rem}.theme-vdoing-content span[data-v-439bb2a8]{font-size:6rem;color:#4274f4}.main-wrapper{margin:1.5rem auto 0;max-width:1100px;padding:0 .9rem;box-sizing:border-box;position:relative;display:flex}.main-wrapper .main-left{flex:1}.main-wrapper .main-left .theme-vdoing-content.card-box{padding:1rem 1.5rem;margin-bottom:.9rem}.main-wrapper .main-left .home-content{padding:1rem 1.5rem 0}.main-wrapper .main-right>*{width:245px;box-sizing:border-box}@media (max-width:900px){.main-wrapper .main-right>*{width:235px}}.main-wrapper .main-right .card-box{margin:0 0 .8rem .8rem;padding-top:.95rem;padding-bottom:.95rem}@media (max-width:719px){.main-wrapper{margin:.9rem 0;padding:0;display:block}.main-wrapper .main-left{width:100%}.main-wrapper .main-left .post-list{margin-bottom:3rem}.main-wrapper .main-left .post-list .post{border-radius:0}.main-wrapper .main-left .pagination{margin-bottom:3rem}.main-wrapper .main-right .blogger-wrapper{display:none}.main-wrapper .main-right .card-box{margin:0 0 .9rem;border-radius:0;width:100%}.theme-style-line .main-wrapper .main-right .card-box{margin:-1px 0 0}}.post-list{margin-bottom:3rem}.post-list .post{position:relative;padding:1rem 1.5rem;margin-bottom:.8rem;transition:all .3s}.post-list .post:last-child{border-bottom:none}.post-list .post.post-leave-active{display:none}.post-list .post.post-enter{opacity:0;transform:translateX(-20px)}.post-list .post:before{position:absolute;top:-1px;right:0;font-size:2.5rem;color:#ff5722;opacity:.85}.post-list .post .title-wrapper a{color:var(--textColor)}.post-list .post .title-wrapper a:hover{color:#4274f4}.post-list .post .title-wrapper h2{margin:.5rem 0;font-size:1.4rem;border:none}.post-list .post .title-wrapper h2 .title-tag{height:1.2rem;line-height:1.2rem;border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.15rem);display:inline-block}.post-list .post .title-wrapper h2 a{display:block}@media (max-width:719px){.post-list .post .title-wrapper h2 a{font-weight:400}}.post-list .post .title-wrapper .article-info>a,.post-list .post .title-wrapper .article-info>span{opacity:.7;font-size:.8rem;margin-right:1rem;cursor:pointer}.post-list .post .title-wrapper .article-info>a:before,.post-list .post .title-wrapper .article-info>span:before{margin-right:.3rem}.post-list .post .title-wrapper .article-info>a a,.post-list .post .title-wrapper .article-info>span a{margin:0}.post-list .post .title-wrapper .article-info>a a:not(:first-child):before,.post-list .post .title-wrapper .article-info>span a:not(:first-child):before{content:"/"}.post-list .post .title-wrapper .article-info .tags a:not(:first-child):before{content:"、"}.post-list .post .excerpt-wrapper{border-top:1px solid var(--borderColor);margin:.5rem 0;overflow:hidden}.post-list .post .excerpt-wrapper .excerpt{margin-bottom:.3rem;font-size:.92rem}.post-list .post .excerpt-wrapper .excerpt h1,.post-list .post .excerpt-wrapper .excerpt h2,.post-list .post .excerpt-wrapper .excerpt h3{display:none}.post-list .post .excerpt-wrapper .excerpt img{max-height:280px;max-width:100%!important;margin:0 auto}.post-list .post .excerpt-wrapper .readmore{float:right;margin-right:1rem;line-height:1rem}.post-list .post .excerpt-wrapper .readmore:before{float:right;font-size:.8rem;margin:.1rem 0 0 .2rem}.theme-style-line .post-list{border:1px solid var(--borderColor);border-bottom:none;border-radius:5px;overflow:hidden}.theme-style-line .post-list .post{margin-bottom:0;border:none;border-bottom:1px solid var(--borderColor);border-radius:0}.article-list{padding:1rem 2rem}@media (max-width:959px){.article-list{padding:1rem 1.5rem}}.article-list.no-article-list{display:none}.article-list .article-title{border-bottom:1px solid var(--borderColor);font-size:1.3rem;padding:1rem}.article-list .article-title a{font-size:1.2rem;color:var(--textColor);opacity:.9}.article-list .article-title a:before{margin-right:.4rem;font-size:1.1rem}.article-list .article-wrapper{overflow:hidden}.article-list .article-wrapper dl{border-bottom:1px dotted var(--borderColor);float:left;display:flex;padding:8px 0;margin:0;height:45px;width:100%}.article-list .article-wrapper dl dd{font-size:1.1rem;color:#f17229;width:50px;text-align:center;margin:0;line-height:45px}.article-list .article-wrapper dl dt{flex:1;display:flex}.article-list .article-wrapper dl dt a{color:var(--textColor);flex:1;display:flex;height:45px;align-items:center;font-weight:400}.article-list .article-wrapper dl dt a div{overflow:hidden;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.article-list .article-wrapper dl dt a div .title-tag{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}.article-list .article-wrapper dl dt a:hover{text-decoration:underline}.article-list .article-wrapper dl dt a.more{color:#4274f4}.article-list .article-wrapper dl dt .date{width:50px;margin-right:15px;color:#999;text-align:right;font-size:.9rem;line-height:45px}.pagination{position:relative;height:60px;text-align:center}@media (max-width:720px){.pagination{margin-left:1px;margin-right:1px}}.pagination span{line-height:1rem;opacity:.9;cursor:pointer}.pagination span:hover{color:#4274f4}.pagination span.ellipsis{opacity:.5}.pagination span.ellipsis:before{content:"...";font-size:1.2rem}@media (any-hover:hover){.pagination span.ellipsis.ell-two:hover:before{content:"«"}.pagination span.ellipsis.ell-four:hover:before{content:"»"}}.pagination>span{position:absolute;top:0;padding:1rem 1.2rem;font-size:.95rem}.pagination>span:before{font-size:.4rem}.pagination>span.disabled{color:hsla(0,0%,49%,.5)}.pagination>span.prev{left:0}.pagination>span.prev:before{margin-right:.3rem}.pagination>span.next{right:0}.pagination>span.next:before{float:right;margin-left:.3rem}.pagination>span p{display:inline;line-height:.95rem}.pagination .pagination-list span{display:inline-block;width:2.5rem;height:2.5rem;line-height:2.5rem;margin:.3rem}.pagination .pagination-list span.active{background:#4274f4;color:var(--mainBg)}@media (max-width:800px){.pagination>span{padding:1rem 1.5rem}.pagination>span p{display:none}}@media (max-width:719px){.pagination>span{padding:.9rem 1.5rem}.pagination .pagination-list span{width:2.3rem;height:2.3rem;line-height:2.3rem;margin:.25rem}}@media (max-width:390px){.pagination>span{padding:.8rem 1.3rem}.pagination .pagination-list span{width:2rem;height:2rem;line-height:2rem;margin:.3rem .1rem .1rem}}.blogger-wrapper{height:auto;display:inline-table;padding-top:0!important;overflow:hidden}.blogger-wrapper .avatar{width:100%;overflow:hidden}.blogger-wrapper .avatar img{width:100%;height:100%}.blogger-wrapper .icons{border-top:none;height:35px;line-height:35px}.blogger-wrapper .icons a{font-size:20px;width:33%;color:var(--textColor);display:block;float:left;text-align:center;opacity:.8}.blogger-wrapper .icons a:hover{color:#4274f4}.blogger-wrapper .blogger{padding:.3rem .95rem 0}.blogger-wrapper .blogger .name{font-size:1.3rem;display:block;margin-bottom:6px}.blogger-wrapper .blogger .slogan{color:var(--textColor)}.categories-wrapper .title{color:var(--textColor);opacity:.9;font-size:1.2rem;padding:0 .95rem}.categories-wrapper .title:before{margin-right:.3rem}.categories-wrapper .categories{margin-top:.6rem}.categories-wrapper .categories a{display:block;padding:8px 2.4rem 7px .95rem;color:var(--textColor);opacity:.8;font-size:.95rem;line-height:.95rem;position:relative;transition:all .2s;border-left:2px solid transparent;margin-top:-1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width:719px){.categories-wrapper .categories a{font-weight:400}}.categories-wrapper .categories a:not(.active):hover{color:#4274f4;background:#f8f8f8;border-color:#4274f4}.categories-wrapper .categories a:not(.active):hover span{opacity:.8}.categories-wrapper .categories a span{background-color:var(--textColor);color:var(--mainBg);border-radius:8px;padding:0 .13rem;min-width:1rem;height:1rem;line-height:1rem;font-size:12px;text-align:center;opacity:.6;transition:opacity .3s;position:absolute;right:.95rem;top:8px}.categories-wrapper .categories a.active{background:#4274f4;color:var(--mainBg);padding-left:.8rem;border-radius:1px;border-color:transparent}.theme-mode-dark .categories-wrapper .categories a:not(.active):hover,.theme-mode-read .categories-wrapper .categories a:not(.active):hover{background:var(--customBlockBg)}.tags-wrapper{padding:0 .95rem}.tags-wrapper .title{color:var(--textColor);opacity:.9;font-size:1.2rem}.tags-wrapper .title:before{margin-right:.3rem}.tags-wrapper .tags{text-align:justify;padding:.8rem .5rem .5rem;margin:0 -.5rem -.5rem}.tags-wrapper .tags a{opacity:.8;display:inline-block;padding:.2rem .4rem;transition:all .4s;background-color:var(--textColor);color:var(--mainBg);border-radius:3px;margin:0 .3rem .5rem 0;min-width:2rem;height:1rem;line-height:1rem;font-size:.8rem;text-align:center}@media (max-width:719px){.tags-wrapper .tags a{font-weight:400}}.tags-wrapper .tags a:hover{opacity:1;transform:scale(1.1)}.tags-wrapper .tags a.active{box-shadow:0 5px 10px -5px var(--randomColor,rgba(0,0,0,.15));transform:scale(1.22);opacity:1}.tags-wrapper .tags a.active:hover{text-decoration:none}.theme-mode-light[data-v-7d2bb426]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-7d2bb426]::-moz-selection,.theme-mode-light code[class*=language-][data-v-7d2bb426] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-7d2bb426]::selection,.theme-mode-light code[class*=language-][data-v-7d2bb426] ::selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426]::selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-7d2bb426],.theme-mode-light .token.comment[data-v-7d2bb426],.theme-mode-light .token.doctype[data-v-7d2bb426],.theme-mode-light .token.prolog[data-v-7d2bb426]{color:#708090}.theme-mode-light .token.punctuation[data-v-7d2bb426]{color:#999}.theme-mode-light .namespace[data-v-7d2bb426]{opacity:.7}.theme-mode-light .token.boolean[data-v-7d2bb426],.theme-mode-light .token.constant[data-v-7d2bb426],.theme-mode-light .token.deleted[data-v-7d2bb426],.theme-mode-light .token.number[data-v-7d2bb426],.theme-mode-light .token.property[data-v-7d2bb426],.theme-mode-light .token.symbol[data-v-7d2bb426],.theme-mode-light .token.tag[data-v-7d2bb426]{color:#905}.theme-mode-light .token.attr-name[data-v-7d2bb426],.theme-mode-light .token.builtin[data-v-7d2bb426],.theme-mode-light .token.char[data-v-7d2bb426],.theme-mode-light .token.inserted[data-v-7d2bb426],.theme-mode-light .token.selector[data-v-7d2bb426],.theme-mode-light .token.string[data-v-7d2bb426]{color:#690}.theme-mode-light .language-css .token.string[data-v-7d2bb426],.theme-mode-light .style .token.string[data-v-7d2bb426],.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-7d2bb426],.theme-mode-light .token.attr-value[data-v-7d2bb426],.theme-mode-light .token.keyword[data-v-7d2bb426]{color:#07a}.theme-mode-light .token.class-name[data-v-7d2bb426],.theme-mode-light .token.function[data-v-7d2bb426]{color:#dd4a68}.theme-mode-light .token.important[data-v-7d2bb426],.theme-mode-light .token.regex[data-v-7d2bb426],.theme-mode-light .token.variable[data-v-7d2bb426]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-7d2bb426],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-7d2bb426]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-7d2bb426]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-7d2bb426]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-7d2bb426]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-7d2bb426]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-7d2bb426],.theme-mode-light .token.cdata[data-v-7d2bb426],.theme-mode-light .token.comment[data-v-7d2bb426],.theme-mode-light .token.doctype[data-v-7d2bb426],.theme-mode-light .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-light .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-light .token.attr-name[data-v-7d2bb426],.theme-mode-light .token.deleted[data-v-7d2bb426],.theme-mode-light .token.namespace[data-v-7d2bb426],.theme-mode-light .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-light .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-light .token.boolean[data-v-7d2bb426],.theme-mode-light .token.function[data-v-7d2bb426],.theme-mode-light .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-light .token.class-name[data-v-7d2bb426],.theme-mode-light .token.constant[data-v-7d2bb426],.theme-mode-light .token.property[data-v-7d2bb426],.theme-mode-light .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-light .token.atrule[data-v-7d2bb426],.theme-mode-light .token.builtin[data-v-7d2bb426],.theme-mode-light .token.important[data-v-7d2bb426],.theme-mode-light .token.keyword[data-v-7d2bb426],.theme-mode-light .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-7d2bb426],.theme-mode-light .token.char[data-v-7d2bb426],.theme-mode-light .token.regex[data-v-7d2bb426],.theme-mode-light .token.string[data-v-7d2bb426],.theme-mode-light .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-7d2bb426],.theme-mode-light .style .token.string[data-v-7d2bb426],.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{background:none}.theme-mode-light .token.bold[data-v-7d2bb426],.theme-mode-light .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-light .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-light .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-light .token.inserted[data-v-7d2bb426]{color:green}.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-7d2bb426],.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-7d2bb426],.theme-mode-dark .token.cdata[data-v-7d2bb426],.theme-mode-dark .token.comment[data-v-7d2bb426],.theme-mode-dark .token.doctype[data-v-7d2bb426],.theme-mode-dark .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-dark .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-7d2bb426],.theme-mode-dark .token.deleted[data-v-7d2bb426],.theme-mode-dark .token.namespace[data-v-7d2bb426],.theme-mode-dark .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-7d2bb426],.theme-mode-dark .token.function[data-v-7d2bb426],.theme-mode-dark .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-7d2bb426],.theme-mode-dark .token.constant[data-v-7d2bb426],.theme-mode-dark .token.property[data-v-7d2bb426],.theme-mode-dark .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-7d2bb426],.theme-mode-dark .token.builtin[data-v-7d2bb426],.theme-mode-dark .token.important[data-v-7d2bb426],.theme-mode-dark .token.keyword[data-v-7d2bb426],.theme-mode-dark .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-7d2bb426],.theme-mode-dark .token.char[data-v-7d2bb426],.theme-mode-dark .token.regex[data-v-7d2bb426],.theme-mode-dark .token.string[data-v-7d2bb426],.theme-mode-dark .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-dark .token.entity[data-v-7d2bb426],.theme-mode-dark .token.operator[data-v-7d2bb426],.theme-mode-dark .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-7d2bb426],.theme-mode-dark .style .token.string[data-v-7d2bb426],.theme-mode-dark .token.entity[data-v-7d2bb426],.theme-mode-dark .token.operator[data-v-7d2bb426],.theme-mode-dark .token.url[data-v-7d2bb426]{background:none}.theme-mode-dark .token.bold[data-v-7d2bb426],.theme-mode-dark .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-dark .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-dark .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-dark .token.inserted[data-v-7d2bb426]{color:green}.theme-mode-read[data-v-7d2bb426]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-7d2bb426],.theme-mode-read pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-read pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-7d2bb426],.theme-mode-read .token.cdata[data-v-7d2bb426],.theme-mode-read .token.comment[data-v-7d2bb426],.theme-mode-read .token.doctype[data-v-7d2bb426],.theme-mode-read .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-read .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-read .token.attr-name[data-v-7d2bb426],.theme-mode-read .token.deleted[data-v-7d2bb426],.theme-mode-read .token.namespace[data-v-7d2bb426],.theme-mode-read .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-read .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-read .token.boolean[data-v-7d2bb426],.theme-mode-read .token.function[data-v-7d2bb426],.theme-mode-read .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-read .token.class-name[data-v-7d2bb426],.theme-mode-read .token.constant[data-v-7d2bb426],.theme-mode-read .token.property[data-v-7d2bb426],.theme-mode-read .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-read .token.atrule[data-v-7d2bb426],.theme-mode-read .token.builtin[data-v-7d2bb426],.theme-mode-read .token.important[data-v-7d2bb426],.theme-mode-read .token.keyword[data-v-7d2bb426],.theme-mode-read .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-7d2bb426],.theme-mode-read .token.char[data-v-7d2bb426],.theme-mode-read .token.regex[data-v-7d2bb426],.theme-mode-read .token.string[data-v-7d2bb426],.theme-mode-read .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-read .token.entity[data-v-7d2bb426],.theme-mode-read .token.operator[data-v-7d2bb426],.theme-mode-read .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-7d2bb426],.theme-mode-read .style .token.string[data-v-7d2bb426],.theme-mode-read .token.entity[data-v-7d2bb426],.theme-mode-read .token.operator[data-v-7d2bb426],.theme-mode-read .token.url[data-v-7d2bb426]{background:none}.theme-mode-read .token.bold[data-v-7d2bb426],.theme-mode-read .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-read .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-read .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-read .token.inserted[data-v-7d2bb426]{color:green}.home-wrapper .banner[data-v-7d2bb426]{width:100%;min-height:450px;margin-top:3.6rem;color:#fff;position:relative;overflow:hidden}.home-wrapper .banner .banner-conent[data-v-7d2bb426]{max-width:1100px;margin:0 auto;position:relative;z-index:1;overflow:hidden}.home-wrapper .banner .banner-conent .hero[data-v-7d2bb426]{text-align:center;margin-top:3rem}.home-wrapper .banner .banner-conent .hero img[data-v-7d2bb426]{max-width:100%;max-height:240px;display:block;margin:2rem auto 1.5rem}.home-wrapper .banner .banner-conent .hero h1[data-v-7d2bb426]{margin:0;font-size:3.2rem}.home-wrapper .banner .banner-conent .hero .action[data-v-7d2bb426],.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{margin:1.5rem auto}.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{max-width:40rem;font-size:1.1rem;line-height:1.3;opacity:.9}.home-wrapper .banner .banner-conent .hero .action-button[data-v-7d2bb426]{display:inline-block;font-size:1.2rem;background-color:#4274f4;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #255ef2;color:#fff}.home-wrapper .banner .banner-conent .hero .action-button[data-v-7d2bb426]:hover{background-color:#5582f5}.home-wrapper .banner .banner-conent .features[data-v-7d2bb426]{padding:2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home-wrapper .banner .banner-conent .feature[data-v-7d2bb426]{flex-grow:1;flex-basis:30%;max-width:30%;text-align:center}.home-wrapper .banner .banner-conent .feature a[data-v-7d2bb426]{color:inherit}.home-wrapper .banner .banner-conent .feature a .feature-img[data-v-7d2bb426]{width:10rem;height:10rem;animation:heart-7d2bb426 1.2s ease-in-out 0s infinite alternate;animation-play-state:paused}.home-wrapper .banner .banner-conent .feature a h2[data-v-7d2bb426]{font-weight:500;font-size:1.3rem;border-bottom:none;padding-bottom:0}.home-wrapper .banner .banner-conent .feature a p[data-v-7d2bb426]{opacity:.8;padding:0 .8rem}.home-wrapper .banner .banner-conent .feature:hover .feature-img[data-v-7d2bb426]{animation-play-state:running}.home-wrapper .banner .banner-conent .feature:hover h2[data-v-7d2bb426],.home-wrapper .banner .banner-conent .feature:hover p[data-v-7d2bb426]{color:#4274f4}.home-wrapper .banner .slide-banner[data-v-7d2bb426]{margin-top:2rem}.home-wrapper .banner .slide-banner .banner-wrapper[data-v-7d2bb426]{position:relative}.home-wrapper .banner .slide-banner .slide-banner-scroll[data-v-7d2bb426]{min-height:1px;overflow:hidden}.home-wrapper .banner .slide-banner .slide-banner-wrapper[data-v-7d2bb426]{height:300px}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item[data-v-7d2bb426]{display:inline-block;height:300px;width:100%;text-align:center}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a[data-v-7d2bb426]{color:inherit}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a .feature-img[data-v-7d2bb426]{width:10rem;height:10rem}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a h2[data-v-7d2bb426]{font-size:1.1rem;font-weight:500;border-bottom:none;padding-bottom:0}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a p[data-v-7d2bb426]{opacity:.8;padding:0 .8rem}.home-wrapper .banner .slide-banner .docs-wrapper[data-v-7d2bb426]{position:absolute;bottom:25px;left:50%;transform:translateX(-50%)}.home-wrapper .banner .slide-banner .docs-wrapper .doc[data-v-7d2bb426]{display:inline-block;margin:0 4px;width:8px;height:8px;border-radius:50%;background:var(--textColor);opacity:.9}.home-wrapper .banner .slide-banner .docs-wrapper .doc.active[data-v-7d2bb426]{opacity:.5}.home-wrapper .banner.hide-banner[data-v-7d2bb426]{display:none}.home-wrapper .banner.hide-banner+.main-wrapper[data-v-7d2bb426]{margin-top:4.5rem}.home-wrapper .main-wrapper[data-v-7d2bb426]{margin-top:2rem}.home-wrapper .main-wrapper .main-left .card-box[data-v-7d2bb426]{margin-bottom:2rem}.home-wrapper .main-wrapper .main-left .pagination[data-v-7d2bb426]{margin-bottom:3rem}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]{padding:0 2rem;overflow:hidden;border:none}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]>:first-child{padding-top:2rem}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]>:last-child{padding-bottom:2rem}.home-wrapper .main-wrapper .main-right .custom-html-box[data-v-7d2bb426]{padding:0;overflow:hidden}@media (max-width:1025px){.home-wrapper .banner .banner-conent .hero h1[data-v-7d2bb426]{font-size:2.5rem}.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{font-size:1rem}.home-wrapper .banner .banner-conent .feature a h2[data-v-7d2bb426]{font-size:1.1rem}.home-wrapper .banner .banner-conent .feature a .feature-img[data-v-7d2bb426]{width:9rem;height:9rem}}@media (max-width:719px){.home-wrapper .banner .banner-conent .features[data-v-7d2bb426]{display:none!important}}@media (max-width:419px){.home-wrapper .banner-conent[data-v-7d2bb426]{padding-left:1.5rem;padding-right:1.5rem}.home-wrapper .banner-conent .hero img[data-v-7d2bb426]{max-height:210px;margin:2rem auto 1.2rem}.home-wrapper .banner-conent .hero h1[data-v-7d2bb426]{font-size:2rem}.home-wrapper .banner-conent .hero .action[data-v-7d2bb426],.home-wrapper .banner-conent .hero .description[data-v-7d2bb426],.home-wrapper .banner-conent .hero h1[data-v-7d2bb426]{margin:1.2rem auto}.home-wrapper .banner-conent .hero .description[data-v-7d2bb426]{font-size:1.2rem}.home-wrapper .banner-conent .hero .action-button[data-v-7d2bb426]{font-size:1rem;padding:.6rem 1.2rem}.home-wrapper .banner-conent .feature h2[data-v-7d2bb426]{font-size:1.25rem}}@media (max-width:719px){.theme-style-line .main-wrapper[data-v-7d2bb426]{margin-top:-1px}}@keyframes heart-7d2bb426{0%{transform:translate(0)}to{transform:translateY(8px)}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/neutrino-proxy/assets/img/search.237d6f6a.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#4274f4}.search-box .suggestions{background:#fff;min-width:500px;max-width:700px;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;border-radius:4px;cursor:pointer;width:100%}.search-box .suggestion a{display:block;white-space:normal;color:#415b75;width:100%}.search-box .suggestion a .parent-page-title{color:#fff;font-weight:600;background-color:#4274f4;padding:5px}.search-box .suggestion a .suggestion-row{border-collapse:collapse;width:100%;display:table}.search-box .suggestion a .suggestion-row .page-title{width:35%;background:#f5f5f5;border:1px solid #eaecef;border-left:none;display:table-cell;text-align:right;padding:5px;font-weight:600}.search-box .suggestion a .suggestion-row .suggestion-content{font-weight:400;border:1px solid #eaecef;border-right:none;width:65%;display:table-cell;padding:5px}.search-box .suggestion a .suggestion-row .suggestion-content .highlight{text-decoration:underline}.search-box .suggestion a .suggestion-row .suggestion-content .header{font-weight:600}.search-box .suggestion.focused{background-color:#f3f4f5}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}@media (max-width:719px){.sidebar-button{display:block}}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (min-width:720px){.sidebar-button{width:40px;height:40px;display:inline-block;position:fixed;left:0;top:4.6rem;text-align:center;line-height:44px;margin:5px 8px;color:#888;border-radius:50%;padding:0;transition:all .2s}.sidebar-button:hover{background:#4274f4;color:#fff;box-shadow:0 0 6px #4274f4}.sidebar-button .icon{display:inline;width:1rem;height:1rem}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:var(--textColor)}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid var(--borderColor);padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#4274f4}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #4274f4;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{font-weight:600;font-size:inherit}.dropdown-wrapper .dropdown-title:hover{color:#4274f4}.dropdown-wrapper .dropdown-title .link-title{display:none}.dropdown-wrapper .dropdown-title .title{display:inline-block!important}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--mainBg);padding:.6rem 0;border-bottom-color:var(--borderColor);border:1px solid var(--borderColor);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}.nav-item .dropdown-title a.router-link-active,.nav-item .dropdown-title a:hover{margin-bottom:-2px;border-bottom:2px solid #517ff5}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#4274f4}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:959px){.nav-links .nav-item{margin-left:1.2rem}}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:var(--textColor)}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #517ff5}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem;transition:transform .3s}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--textColor);position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}.hide-navbar .navbar{transform:translateY(-100%)}@media (max-width:959px){.navbar .site-name{display:none}}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:860px;padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block;float:left;margin:0 2rem .5rem 0}.page-edit .edit-link a{margin-right:.25rem}.page-edit .tags{float:left}.page-edit .tags a{margin:0 .8rem .5rem 0;display:inline-block;color:var(--textLightenColor);padding:.2rem .7rem;font-size:.9em;background-color:hsla(0,0%,50.2%,.08);border-radius:3px;opacity:.8}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:var(--textColor);opacity:.8}.page-edit .last-updated .time{font-weight:400;color:#aaa}@media (max-width:719px){.page-edit .edit-link,.page-edit .tags{margin-bottom:.5rem}.page-edit .last-updated{width:100%;font-size:.8em;text-align:left}}.page-nav{max-width:860px;padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid var(--borderColor);padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page-nav-centre-wrap .page-nav-centre{position:fixed;top:50%;width:80px;height:70px;margin-top:-35px;outline:0;transition:all .2s;border-radius:3px;opacity:.55;z-index:99}@media (max-width:1340px){.page-nav-centre-wrap .page-nav-centre{width:50px}}@media (max-width:960px){.page-nav-centre-wrap .page-nav-centre{display:none}}.page-nav-centre-wrap .page-nav-centre:hover{background:hsla(0,0%,60%,.15);opacity:1}.page-nav-centre-wrap .page-nav-centre:hover .tooltip{display:block}.page-nav-centre-wrap .page-nav-centre:before{content:"";display:block;width:10px;height:10px;border-top:2px solid #999;border-right:2px solid #999;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.page-nav-centre-wrap .page-nav-centre .tooltip{display:none;background:rgba(0,0,0,.5);color:#fff;padding:4px 8px;font-size:13px;border-radius:3px;position:fixed;max-width:200px;z-index:99}.page-nav-centre-wrap .page-nav-centre-prev{left:0}.page-nav-centre-wrap .page-nav-centre-prev:before{transform:rotate(-135deg)}.page-nav-centre-wrap .page-nav-centre-next{right:0}.page-nav-centre-wrap .page-nav-centre-next:before{transform:rotate(45deg)}.sidebar-open .page-nav-centre-wrap .page-nav-centre-prev{left:18rem}.no-sidebar .page-nav-centre-wrap .page-nav-centre-prev{left:0}.theme-mode-light[data-v-06225672]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-06225672]::-moz-selection,.theme-mode-light code[class*=language-][data-v-06225672] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-06225672]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-06225672] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-06225672]::selection,.theme-mode-light code[class*=language-][data-v-06225672] ::selection,.theme-mode-light pre[class*=language-][data-v-06225672]::selection,.theme-mode-light pre[class*=language-][data-v-06225672] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-06225672],.theme-mode-light .token.comment[data-v-06225672],.theme-mode-light .token.doctype[data-v-06225672],.theme-mode-light .token.prolog[data-v-06225672]{color:#708090}.theme-mode-light .token.punctuation[data-v-06225672]{color:#999}.theme-mode-light .namespace[data-v-06225672]{opacity:.7}.theme-mode-light .token.boolean[data-v-06225672],.theme-mode-light .token.constant[data-v-06225672],.theme-mode-light .token.deleted[data-v-06225672],.theme-mode-light .token.number[data-v-06225672],.theme-mode-light .token.property[data-v-06225672],.theme-mode-light .token.symbol[data-v-06225672],.theme-mode-light .token.tag[data-v-06225672]{color:#905}.theme-mode-light .token.attr-name[data-v-06225672],.theme-mode-light .token.builtin[data-v-06225672],.theme-mode-light .token.char[data-v-06225672],.theme-mode-light .token.inserted[data-v-06225672],.theme-mode-light .token.selector[data-v-06225672],.theme-mode-light .token.string[data-v-06225672]{color:#690}.theme-mode-light .language-css .token.string[data-v-06225672],.theme-mode-light .style .token.string[data-v-06225672],.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-06225672],.theme-mode-light .token.attr-value[data-v-06225672],.theme-mode-light .token.keyword[data-v-06225672]{color:#07a}.theme-mode-light .token.class-name[data-v-06225672],.theme-mode-light .token.function[data-v-06225672]{color:#dd4a68}.theme-mode-light .token.important[data-v-06225672],.theme-mode-light .token.regex[data-v-06225672],.theme-mode-light .token.variable[data-v-06225672]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-06225672],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-06225672]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-06225672]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-06225672]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-06225672]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-06225672]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-06225672]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-06225672]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-06225672],.theme-mode-light .token.cdata[data-v-06225672],.theme-mode-light .token.comment[data-v-06225672],.theme-mode-light .token.doctype[data-v-06225672],.theme-mode-light .token.prolog[data-v-06225672]{color:#999}.theme-mode-light .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-light .token.attr-name[data-v-06225672],.theme-mode-light .token.deleted[data-v-06225672],.theme-mode-light .token.namespace[data-v-06225672],.theme-mode-light .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-light .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-light .token.boolean[data-v-06225672],.theme-mode-light .token.function[data-v-06225672],.theme-mode-light .token.number[data-v-06225672]{color:#f08d49}.theme-mode-light .token.class-name[data-v-06225672],.theme-mode-light .token.constant[data-v-06225672],.theme-mode-light .token.property[data-v-06225672],.theme-mode-light .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-light .token.atrule[data-v-06225672],.theme-mode-light .token.builtin[data-v-06225672],.theme-mode-light .token.important[data-v-06225672],.theme-mode-light .token.keyword[data-v-06225672],.theme-mode-light .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-06225672],.theme-mode-light .token.char[data-v-06225672],.theme-mode-light .token.regex[data-v-06225672],.theme-mode-light .token.string[data-v-06225672],.theme-mode-light .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-06225672],.theme-mode-light .style .token.string[data-v-06225672],.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{background:none}.theme-mode-light .token.bold[data-v-06225672],.theme-mode-light .token.important[data-v-06225672]{font-weight:700}.theme-mode-light .token.italic[data-v-06225672]{font-style:italic}.theme-mode-light .token.entity[data-v-06225672]{cursor:help}.theme-mode-light .token.inserted[data-v-06225672]{color:green}.theme-mode-dark[data-v-06225672]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-06225672],.theme-mode-dark pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-dark pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-06225672],.theme-mode-dark .token.cdata[data-v-06225672],.theme-mode-dark .token.comment[data-v-06225672],.theme-mode-dark .token.doctype[data-v-06225672],.theme-mode-dark .token.prolog[data-v-06225672]{color:#999}.theme-mode-dark .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-06225672],.theme-mode-dark .token.deleted[data-v-06225672],.theme-mode-dark .token.namespace[data-v-06225672],.theme-mode-dark .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-06225672],.theme-mode-dark .token.function[data-v-06225672],.theme-mode-dark .token.number[data-v-06225672]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-06225672],.theme-mode-dark .token.constant[data-v-06225672],.theme-mode-dark .token.property[data-v-06225672],.theme-mode-dark .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-06225672],.theme-mode-dark .token.builtin[data-v-06225672],.theme-mode-dark .token.important[data-v-06225672],.theme-mode-dark .token.keyword[data-v-06225672],.theme-mode-dark .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-06225672],.theme-mode-dark .token.char[data-v-06225672],.theme-mode-dark .token.regex[data-v-06225672],.theme-mode-dark .token.string[data-v-06225672],.theme-mode-dark .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-dark .token.entity[data-v-06225672],.theme-mode-dark .token.operator[data-v-06225672],.theme-mode-dark .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-06225672],.theme-mode-dark .style .token.string[data-v-06225672],.theme-mode-dark .token.entity[data-v-06225672],.theme-mode-dark .token.operator[data-v-06225672],.theme-mode-dark .token.url[data-v-06225672]{background:none}.theme-mode-dark .token.bold[data-v-06225672],.theme-mode-dark .token.important[data-v-06225672]{font-weight:700}.theme-mode-dark .token.italic[data-v-06225672]{font-style:italic}.theme-mode-dark .token.entity[data-v-06225672]{cursor:help}.theme-mode-dark .token.inserted[data-v-06225672]{color:green}.theme-mode-read[data-v-06225672]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-06225672],.theme-mode-read pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-read pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-06225672],.theme-mode-read .token.cdata[data-v-06225672],.theme-mode-read .token.comment[data-v-06225672],.theme-mode-read .token.doctype[data-v-06225672],.theme-mode-read .token.prolog[data-v-06225672]{color:#999}.theme-mode-read .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-read .token.attr-name[data-v-06225672],.theme-mode-read .token.deleted[data-v-06225672],.theme-mode-read .token.namespace[data-v-06225672],.theme-mode-read .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-read .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-read .token.boolean[data-v-06225672],.theme-mode-read .token.function[data-v-06225672],.theme-mode-read .token.number[data-v-06225672]{color:#f08d49}.theme-mode-read .token.class-name[data-v-06225672],.theme-mode-read .token.constant[data-v-06225672],.theme-mode-read .token.property[data-v-06225672],.theme-mode-read .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-read .token.atrule[data-v-06225672],.theme-mode-read .token.builtin[data-v-06225672],.theme-mode-read .token.important[data-v-06225672],.theme-mode-read .token.keyword[data-v-06225672],.theme-mode-read .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-06225672],.theme-mode-read .token.char[data-v-06225672],.theme-mode-read .token.regex[data-v-06225672],.theme-mode-read .token.string[data-v-06225672],.theme-mode-read .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-read .token.entity[data-v-06225672],.theme-mode-read .token.operator[data-v-06225672],.theme-mode-read .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-06225672],.theme-mode-read .style .token.string[data-v-06225672],.theme-mode-read .token.entity[data-v-06225672],.theme-mode-read .token.operator[data-v-06225672],.theme-mode-read .token.url[data-v-06225672]{background:none}.theme-mode-read .token.bold[data-v-06225672],.theme-mode-read .token.important[data-v-06225672]{font-weight:700}.theme-mode-read .token.italic[data-v-06225672]{font-style:italic}.theme-mode-read .token.entity[data-v-06225672]{cursor:help}.theme-mode-read .token.inserted[data-v-06225672]{color:green}.articleInfo-wrap[data-v-06225672]{max-width:860px}.theme-style-line .articleInfo-wrap .articleInfo[data-v-06225672]{padding-top:.5rem}.articleInfo-wrap[data-v-06225672]{position:relative;z-index:1;color:#888}.articleInfo-wrap .articleInfo[data-v-06225672]{overflow:hidden;font-size:.92rem}.articleInfo-wrap .articleInfo .breadcrumbs[data-v-06225672]{margin:0;padding:0;overflow:hidden;display:inline-block;line-height:2rem}@media (max-width:960px){.articleInfo-wrap .articleInfo .breadcrumbs[data-v-06225672]{width:100%}}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]{list-style-type:none;float:left;padding-right:5px}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]:after{content:"/";margin-left:5px;color:#999}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]:last-child:after{content:""}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]{color:#888}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]:before{font-size:.92rem}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]:hover{color:#4274f4}.articleInfo-wrap .articleInfo .breadcrumbs li .icon-home[data-v-06225672]{text-decoration:none}.articleInfo-wrap .articleInfo .info[data-v-06225672]{float:right;line-height:32px}@media (max-width:960px){.articleInfo-wrap .articleInfo .info[data-v-06225672]{float:left}}.articleInfo-wrap .articleInfo .info div[data-v-06225672]{float:left;margin-left:20px;font-size:.8rem}@media (max-width:960px){.articleInfo-wrap .articleInfo .info div[data-v-06225672]{margin:0 20px 0 0}}.articleInfo-wrap .articleInfo .info div[data-v-06225672]:before{margin-right:3px}.articleInfo-wrap .articleInfo .info div a[data-v-06225672]{color:#888}.articleInfo-wrap .articleInfo .info div a[data-v-06225672]:hover{text-decoration:none}.articleInfo-wrap .articleInfo .info div a.beLink[data-v-06225672]:hover{color:#4274f4;text-decoration:underline}.theme-mode-light[data-v-2cf874fa]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-2cf874fa]::-moz-selection,.theme-mode-light code[class*=language-][data-v-2cf874fa] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-2cf874fa]::selection,.theme-mode-light code[class*=language-][data-v-2cf874fa] ::selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa]::selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-2cf874fa],.theme-mode-light .token.comment[data-v-2cf874fa],.theme-mode-light .token.doctype[data-v-2cf874fa],.theme-mode-light .token.prolog[data-v-2cf874fa]{color:#708090}.theme-mode-light .token.punctuation[data-v-2cf874fa]{color:#999}.theme-mode-light .namespace[data-v-2cf874fa]{opacity:.7}.theme-mode-light .token.boolean[data-v-2cf874fa],.theme-mode-light .token.constant[data-v-2cf874fa],.theme-mode-light .token.deleted[data-v-2cf874fa],.theme-mode-light .token.number[data-v-2cf874fa],.theme-mode-light .token.property[data-v-2cf874fa],.theme-mode-light .token.symbol[data-v-2cf874fa],.theme-mode-light .token.tag[data-v-2cf874fa]{color:#905}.theme-mode-light .token.attr-name[data-v-2cf874fa],.theme-mode-light .token.builtin[data-v-2cf874fa],.theme-mode-light .token.char[data-v-2cf874fa],.theme-mode-light .token.inserted[data-v-2cf874fa],.theme-mode-light .token.selector[data-v-2cf874fa],.theme-mode-light .token.string[data-v-2cf874fa]{color:#690}.theme-mode-light .language-css .token.string[data-v-2cf874fa],.theme-mode-light .style .token.string[data-v-2cf874fa],.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-2cf874fa],.theme-mode-light .token.attr-value[data-v-2cf874fa],.theme-mode-light .token.keyword[data-v-2cf874fa]{color:#07a}.theme-mode-light .token.class-name[data-v-2cf874fa],.theme-mode-light .token.function[data-v-2cf874fa]{color:#dd4a68}.theme-mode-light .token.important[data-v-2cf874fa],.theme-mode-light .token.regex[data-v-2cf874fa],.theme-mode-light .token.variable[data-v-2cf874fa]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-2cf874fa],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-2cf874fa]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-2cf874fa]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-2cf874fa]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-2cf874fa]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-2cf874fa]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-2cf874fa],.theme-mode-light .token.cdata[data-v-2cf874fa],.theme-mode-light .token.comment[data-v-2cf874fa],.theme-mode-light .token.doctype[data-v-2cf874fa],.theme-mode-light .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-light .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-light .token.attr-name[data-v-2cf874fa],.theme-mode-light .token.deleted[data-v-2cf874fa],.theme-mode-light .token.namespace[data-v-2cf874fa],.theme-mode-light .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-light .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-light .token.boolean[data-v-2cf874fa],.theme-mode-light .token.function[data-v-2cf874fa],.theme-mode-light .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-light .token.class-name[data-v-2cf874fa],.theme-mode-light .token.constant[data-v-2cf874fa],.theme-mode-light .token.property[data-v-2cf874fa],.theme-mode-light .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-light .token.atrule[data-v-2cf874fa],.theme-mode-light .token.builtin[data-v-2cf874fa],.theme-mode-light .token.important[data-v-2cf874fa],.theme-mode-light .token.keyword[data-v-2cf874fa],.theme-mode-light .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-2cf874fa],.theme-mode-light .token.char[data-v-2cf874fa],.theme-mode-light .token.regex[data-v-2cf874fa],.theme-mode-light .token.string[data-v-2cf874fa],.theme-mode-light .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-2cf874fa],.theme-mode-light .style .token.string[data-v-2cf874fa],.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{background:none}.theme-mode-light .token.bold[data-v-2cf874fa],.theme-mode-light .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-light .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-light .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-light .token.inserted[data-v-2cf874fa]{color:green}.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-2cf874fa],.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-2cf874fa],.theme-mode-dark .token.cdata[data-v-2cf874fa],.theme-mode-dark .token.comment[data-v-2cf874fa],.theme-mode-dark .token.doctype[data-v-2cf874fa],.theme-mode-dark .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-dark .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-2cf874fa],.theme-mode-dark .token.deleted[data-v-2cf874fa],.theme-mode-dark .token.namespace[data-v-2cf874fa],.theme-mode-dark .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-2cf874fa],.theme-mode-dark .token.function[data-v-2cf874fa],.theme-mode-dark .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-2cf874fa],.theme-mode-dark .token.constant[data-v-2cf874fa],.theme-mode-dark .token.property[data-v-2cf874fa],.theme-mode-dark .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-2cf874fa],.theme-mode-dark .token.builtin[data-v-2cf874fa],.theme-mode-dark .token.important[data-v-2cf874fa],.theme-mode-dark .token.keyword[data-v-2cf874fa],.theme-mode-dark .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-2cf874fa],.theme-mode-dark .token.char[data-v-2cf874fa],.theme-mode-dark .token.regex[data-v-2cf874fa],.theme-mode-dark .token.string[data-v-2cf874fa],.theme-mode-dark .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-dark .token.entity[data-v-2cf874fa],.theme-mode-dark .token.operator[data-v-2cf874fa],.theme-mode-dark .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-2cf874fa],.theme-mode-dark .style .token.string[data-v-2cf874fa],.theme-mode-dark .token.entity[data-v-2cf874fa],.theme-mode-dark .token.operator[data-v-2cf874fa],.theme-mode-dark .token.url[data-v-2cf874fa]{background:none}.theme-mode-dark .token.bold[data-v-2cf874fa],.theme-mode-dark .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-dark .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-dark .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-dark .token.inserted[data-v-2cf874fa]{color:green}.theme-mode-read[data-v-2cf874fa]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-2cf874fa],.theme-mode-read pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-read pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-2cf874fa],.theme-mode-read .token.cdata[data-v-2cf874fa],.theme-mode-read .token.comment[data-v-2cf874fa],.theme-mode-read .token.doctype[data-v-2cf874fa],.theme-mode-read .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-read .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-read .token.attr-name[data-v-2cf874fa],.theme-mode-read .token.deleted[data-v-2cf874fa],.theme-mode-read .token.namespace[data-v-2cf874fa],.theme-mode-read .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-read .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-read .token.boolean[data-v-2cf874fa],.theme-mode-read .token.function[data-v-2cf874fa],.theme-mode-read .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-read .token.class-name[data-v-2cf874fa],.theme-mode-read .token.constant[data-v-2cf874fa],.theme-mode-read .token.property[data-v-2cf874fa],.theme-mode-read .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-read .token.atrule[data-v-2cf874fa],.theme-mode-read .token.builtin[data-v-2cf874fa],.theme-mode-read .token.important[data-v-2cf874fa],.theme-mode-read .token.keyword[data-v-2cf874fa],.theme-mode-read .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-2cf874fa],.theme-mode-read .token.char[data-v-2cf874fa],.theme-mode-read .token.regex[data-v-2cf874fa],.theme-mode-read .token.string[data-v-2cf874fa],.theme-mode-read .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-read .token.entity[data-v-2cf874fa],.theme-mode-read .token.operator[data-v-2cf874fa],.theme-mode-read .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-2cf874fa],.theme-mode-read .style .token.string[data-v-2cf874fa],.theme-mode-read .token.entity[data-v-2cf874fa],.theme-mode-read .token.operator[data-v-2cf874fa],.theme-mode-read .token.url[data-v-2cf874fa]{background:none}.theme-mode-read .token.bold[data-v-2cf874fa],.theme-mode-read .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-read .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-read .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-read .token.inserted[data-v-2cf874fa]{color:green}.theme-vdoing-content[data-v-2cf874fa]{margin-bottom:3.6rem}.title-tag[data-v-2cf874fa]{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}dd[data-v-2cf874fa],dl[data-v-2cf874fa]{margin:0}.column-wrapper[data-v-2cf874fa]{margin-top:1rem;display:flex;padding-bottom:2rem;border-bottom:1px solid var(--borderColor)}.column-wrapper img[data-v-2cf874fa]{width:80px;height:80px;border-radius:2px;margin-right:1rem}.column-wrapper .column-info .title[data-v-2cf874fa]{font-size:1.6rem}.column-wrapper .column-info .description[data-v-2cf874fa]{color:var(--textColor);opacity:.8;margin:.5rem 0}.catalogue-wrapper .catalogue-title[data-v-2cf874fa]{font-size:1.45rem;margin:2rem 0}.catalogue-wrapper .catalogue-content dl[data-v-2cf874fa]{margin-bottom:1.8rem}.catalogue-wrapper .catalogue-content dl.inline[data-v-2cf874fa]{display:inline-block;width:50%;margin-bottom:1rem}@media (max-width:419px){.catalogue-wrapper .catalogue-content dl.inline[data-v-2cf874fa]{width:100%}}.catalogue-wrapper .catalogue-content dl.inline a[data-v-2cf874fa]{width:100%}.catalogue-wrapper .catalogue-content dl:not(.inline) dt[data-v-2cf874fa]{margin-top:-3.6rem;padding-top:3.6rem}.catalogue-wrapper .catalogue-content dl dt[data-v-2cf874fa]{font-size:1.1rem}.catalogue-wrapper .catalogue-content dl dt:hover .header-anchor[data-v-2cf874fa]{opacity:1}.catalogue-wrapper .catalogue-content dl dd[data-v-2cf874fa]{margin-top:.7rem;margin-left:1rem}.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor){margin-bottom:.5rem;display:inline-block;width:50%}.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor):hover{color:#ff5722;text-decoration:none}@media (max-width:720px){.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor){width:100%}}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap[data-v-2cf874fa]{margin:5px 0 8px;font-size:.95rem}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap>a[data-v-2cf874fa]{padding-left:1rem;box-sizing:border-box}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap .sub-title[data-v-2cf874fa]{margin-top:-3.6rem;padding-top:3.6rem;margin-bottom:6px;font-size:1rem}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap:hover .header-anchor[data-v-2cf874fa]{opacity:1}.theme-style-line .right-menu-wrapper .right-menu-margin{border-left:1px solid var(--borderColor)}.right-menu-wrapper{width:230px;float:right;margin-right:-285px;position:sticky;top:0;font-size:.8rem}.right-menu-wrapper .right-menu-margin{margin-top:4.6rem;border-radius:3px;overflow:hidden}.right-menu-wrapper .right-menu-title{padding:10px 15px 0;background:var(--mainBg);font-size:1rem}.right-menu-wrapper .right-menu-title:after{content:"";display:block;width:100%;height:1px;background:var(--borderColor);margin-top:10px}.right-menu-wrapper .right-menu-content{max-height:80vh;position:relative;overflow:hidden;background:var(--mainBg);padding:4px 3px 4px 0}.right-menu-wrapper .right-menu-content::-webkit-scrollbar{width:3px;height:3px}.right-menu-wrapper .right-menu-content::-webkit-scrollbar-track-piece{background:none}.right-menu-wrapper .right-menu-content::-webkit-scrollbar-thumb:vertical{background-color:hsla(0,0%,49%,.3)}.right-menu-wrapper .right-menu-content:hover{overflow-y:auto;padding-right:0}.right-menu-wrapper .right-menu-content .right-menu-item{padding:4px 15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative}.right-menu-wrapper .right-menu-content .right-menu-item.level2{font-size:.8rem}.right-menu-wrapper .right-menu-content .right-menu-item.level3{padding-left:27px}.right-menu-wrapper .right-menu-content .right-menu-item.level4{padding-left:37px}.right-menu-wrapper .right-menu-content .right-menu-item.level5{padding-left:47px}.right-menu-wrapper .right-menu-content .right-menu-item.level6{padding-left:57px}.right-menu-wrapper .right-menu-content .right-menu-item.active:before{content:"";position:absolute;top:5px;left:0;width:3px;height:14px;background:#4274f4;border-radius:0 4px 4px 0}.right-menu-wrapper .right-menu-content .right-menu-item.active a{color:#4274f4;opacity:1}.right-menu-wrapper .right-menu-content .right-menu-item a{color:var(--textColor);opacity:.75;display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.right-menu-wrapper .right-menu-content .right-menu-item a:hover{opacity:1}.right-menu-wrapper .right-menu-content:hover{color:#4274f4}.page>*{max-width:860px;margin:0 auto;padding:1rem 2.5rem 2rem}.page>:not(.footer){background:var(--mainBg);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);margin-bottom:1rem}@media (min-width:940px){.page>:not(.footer){border-radius:2px}}@media (max-width:959px){.page>*{padding:1rem 2rem}}@media (max-width:419px){.page>*{padding:1rem 1.5rem}}.page{padding-bottom:2rem;display:block}@media (max-width:719px){.page{padding-top:3.6rem}}@media (min-width:719px){.page{padding-top:5.1rem}}@media (min-width:719px){.theme-style-line .page{padding-top:3.6rem}}.theme-style-line .page>:not(.footer){box-shadow:0 0}@media (min-width:720px){.theme-style-line .page .placeholder{height:1.2rem}}.theme-vdoing-wrapper .content-wrapper{position:relative}.theme-vdoing-wrapper h1 .title-tag{height:1.5rem;line-height:1.5rem;border:1px solid #ff5722;color:#ff5722;font-size:1rem;padding:0 .4rem;border-radius:.2rem;margin-left:.5rem;transform:translateY(-.25rem);display:inline-block}.theme-vdoing-wrapper h1 img{margin-bottom:-.2rem;margin-right:.2rem;max-width:2.2rem;max-height:2.2rem}.theme-vdoing-wrapper{--linesColor:rgba(50,0,0,0.05)}.theme-vdoing-wrapper.bg-style-1{background-image:linear-gradient(90deg,var(--linesColor) 3%,transparent 0),linear-gradient(0deg,var(--linesColor) 3%,transparent 0);background-position:50%;background-size:20px 20px}.theme-vdoing-wrapper.bg-style-2{background-image:repeating-linear-gradient(0,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:30px 30px}.theme-vdoing-wrapper.bg-style-3{background-image:repeating-linear-gradient(90deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:30px 30px}.theme-vdoing-wrapper.bg-style-4{background-image:repeating-linear-gradient(-45deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:20px 20px}.theme-vdoing-wrapper.bg-style-5{background-image:repeating-linear-gradient(45deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:20px 20px}.theme-vdoing-wrapper.bg-style-6{background-image:radial-gradient(var(--linesColor) 1px,transparent 0);background-size:10px 10px}.theme-mode-dark .theme-vdoing-wrapper{--linesColor:hsla(0,0%,49%,0.05)}@media (min-width:720px) and (max-width:1279px){.have-rightmenu .page{padding-right:.8rem!important}}@media (max-width:1279px){.have-rightmenu .right-menu-wrapper{display:none}}@media (min-width:1280px){.have-rightmenu .sidebar .sidebar-sub-headers{display:none}}.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar,.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar-button{display:none}@media (min-width:720px){.theme-container.only-sidebarItem:not(.have-rightmenu) .page{padding-left:.8rem!important}}@media (max-width:719px){.theme-container.only-sidebarItem:not(.have-rightmenu) .page{padding-left:0!important}.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar,.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar-button{display:block}}@media (min-width:720px) and (max-width:1279px){.theme-container.only-sidebarItem.have-rightmenu .sidebar,.theme-container.only-sidebarItem.have-rightmenu .sidebar-button{display:block}}@media (min-width:1280px){.theme-container.only-sidebarItem.have-rightmenu .sidebar,.theme-container.only-sidebarItem.have-rightmenu .sidebar-button{display:none}}.categories-page .categories-wrapper{position:sticky;top:4.5rem;max-height:calc(100vh - 10rem);min-height:4.2rem}@media (max-width:719px){.categories-page .categories-wrapper{display:none}}.categories-page .categories-wrapper .categories{max-height:calc(100vh - 14rem);min-height:2.2rem;overflow-y:auto;transition:all .2s;position:relative}.categories-page .categories-wrapper .categories a{padding-right:1.8rem}.categories-page .categories-wrapper .categories a span{right:.4rem}.categories-page .categories-wrapper .categories::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.05)}.categories-page .categories-wrapper .categories::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.15)}.categories-page .categories-wrapper .categories:hover::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.1)}.categories-page .categories-wrapper .categories:hover::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25)}.categories-page .main-left .categories-wrapper{position:relative;top:0;padding:.9rem 1.5rem;margin-bottom:.9rem;max-height:15rem;border-radius:0;display:none}@media (max-width:719px){.categories-page .main-left .categories-wrapper{display:block}}.categories-page .main-left .categories-wrapper .categories{max-height:12.3rem}@media (max-width:719px){.theme-style-line .categories-page .main-left .categories-wrapper{margin-top:-.91rem;margin-bottom:-1px;padding:.9rem .2rem .5rem}}.tags-page .tags-wrapper{position:sticky;top:4.5rem;max-height:calc(100vh - 10rem);min-height:4.2rem}@media (max-width:719px){.tags-page .tags-wrapper{display:none}}.tags-page .tags-wrapper .tags{max-height:calc(100vh - 14rem);min-height:2.2rem;overflow-x:hidden;overflow-y:auto;transition:all .2s}.tags-page .tags-wrapper .tags::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.05)}.tags-page .tags-wrapper .tags::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.15)}.tags-page .tags-wrapper .tags:hover::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.1)}.tags-page .tags-wrapper .tags:hover::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25)}.tags-page .main-left .tags-wrapper{position:relative;top:0;padding:.9rem 1.5rem;margin-bottom:.9rem;max-height:15rem;border-radius:0;display:none}@media (max-width:719px){.tags-page .main-left .tags-wrapper{display:block}}.tags-page .main-left .tags-wrapper .tags{max-height:11.5rem}@media (max-width:719px){.theme-style-line .tags-page .main-left .tags-wrapper{margin-top:-.91rem;margin-bottom:-1px}}.archives-page .theme-vdoing-wrapper{max-width:860px;margin:0 auto;padding:1rem 2.5rem 2rem}.archives-page .theme-vdoing-wrapper:not(.footer){background:var(--mainBg);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);margin-bottom:1rem}@media (min-width:940px){.archives-page .theme-vdoing-wrapper:not(.footer){border-radius:2px}}@media (max-width:959px){.archives-page .theme-vdoing-wrapper{padding:1rem 2rem}}@media (max-width:419px){.archives-page .theme-vdoing-wrapper{padding:1rem 1.5rem}}.theme-style-line .archives-page .theme-vdoing-wrapper{box-shadow:0 0}.archives-page .theme-vdoing-wrapper{position:relative}@media (min-width:940px){.archives-page .theme-vdoing-wrapper{margin-top:1.5rem!important}}.archives-page .theme-vdoing-wrapper .count{text-align:right;margin-top:-2.5rem;font-size:.85rem;opacity:.8}.archives-page .theme-vdoing-wrapper li,.archives-page .theme-vdoing-wrapper ul{margin:0;padding:0}.archives-page .theme-vdoing-wrapper ul{margin-top:2rem}.archives-page .theme-vdoing-wrapper li{list-style:none}.archives-page .theme-vdoing-wrapper li.year{position:sticky;top:3.6rem;background:var(--mainBg);z-index:1}.archives-page .theme-vdoing-wrapper li.year:not(:first-child){margin-top:3.5rem}.archives-page .theme-vdoing-wrapper li h2{margin-bottom:.8rem;font-weight:400;padding:.5rem 0}.archives-page .theme-vdoing-wrapper li h2 span{font-size:.85rem;font-weight:300;float:right;margin-top:1rem}.archives-page .theme-vdoing-wrapper li a{display:block;color:var(--textColor);transition:padding .3s;padding:.5rem 2rem;line-height:1.2rem}.archives-page .theme-vdoing-wrapper li a:hover{padding-left:2.5rem;color:#4274f4;background:#f9f9f9}@media (max-width:940px){.archives-page .theme-vdoing-wrapper li a{padding:.5rem 1rem;font-weight:400}.archives-page .theme-vdoing-wrapper li a:hover{padding-left:1.5rem}}.archives-page .theme-vdoing-wrapper li a span.date{opacity:.6;font-size:.85rem;font-weight:400;margin-right:.3rem}.archives-page .theme-vdoing-wrapper li a .title-tag{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}.archives-page .theme-vdoing-wrapper .loadmore{text-align:center;margin-top:1rem;opacity:.5}.theme-mode-dark .archives-page .theme-vdoing-wrapper li a:hover,.theme-mode-read .archives-page .theme-vdoing-wrapper li a:hover{background:var(--customBlockBg)}.hide-navbar .archives-page .theme-vdoing-wrapper li.year{top:0}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:1.01em;line-height:1.4;font-weight:700;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.98em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:var(--textColor);transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#4274f4;border-left-color:#4274f4}.sidebar-heading.clickable:hover{color:#4274f4}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}.sidebar .sidebar-sub-headers .level4{padding-left:.2rem}.sidebar .sidebar-sub-headers .level5{padding-left:.4rem}.sidebar .sidebar-sub-headers .level6{padding-left:.6rem}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:var(--textColor);border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#4274f4}a.sidebar-link.active{font-weight:600;color:#4274f4;border-left-color:#4274f4}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid var(--borderColor);padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}.sidebar .blogger{display:none;border-bottom:1px solid var(--borderColor)}.sidebar .blogger img{width:60px;height:60px;border-radius:5px;margin:.75rem 1rem}.sidebar .blogger .blogger-info{flex:1;padding:0 .3rem .3rem 0}.sidebar .blogger .blogger-info h3{margin:.95rem 0 .6rem;font-size:1.1rem}.sidebar .blogger .blogger-info .icons .iconfont{font-size:1.2rem;padding-right:.6rem;color:#777}.sidebar .sidebar-slot{margin-bottom:-.5rem;font-size:.85rem}.sidebar .sidebar-slot.sidebar-slot-top{padding:1.5rem 1.5rem 0}.sidebar .sidebar-slot.sidebar-slot-bottom{padding:0 1.5rem 1.5rem}@media (max-width:719px){.sidebar .blogger{display:flex}.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.yellowBorder{border-radius:5px;box-shadow:0 0 15px #ffe089!important}.buttons{position:fixed;right:2rem;bottom:2.5rem;z-index:11}@media (max-width:959px){.buttons{right:1rem;bottom:1.5rem}}.buttons .button{width:2.2rem;height:2.2rem;line-height:2.2rem;border-radius:50%;box-shadow:0 2px 6px rgba(0,0,0,.15);margin-top:.9rem;text-align:center;cursor:pointer;transition:all .5s;background:var(--blurBg)}.buttons .button.hover{background:#4274f4;box-shadow:0 0 15px #4274f4}.buttons .button.hover:before{color:#fff}@media (any-hover:hover){.buttons .button:hover{background:#4274f4;box-shadow:0 0 15px #4274f4}.buttons .button:hover:before{color:#fff}}.buttons .button .select-box{margin:0;padding:.8rem 0;position:absolute;bottom:0;right:1.5rem;background:var(--mainBg);border:1px solid var(--borderColor);width:120px;border-radius:6px;box-shadow:0 0 15px hsla(0,0%,100%,.2)}.buttons .button .select-box li{list-style:none;line-height:2rem;font-size:.95rem}.buttons .button .select-box li:hover{color:#4274f4}.buttons .button .select-box li.active{background-color:hsla(0,0%,58.8%,.2);color:#4274f4}.mode-enter-active,.mode-leave-active{transition:all .3s}.mode-enter,.mode-leave-to{opacity:0;transform:scale(.8)}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-to{opacity:0}.footer{padding:5rem 1.5rem 2.5rem;text-align:center;color:#666;box-sizing:border-box;font-size:.85rem;transition:all .2s ease}.footer>span{line-height:1.5rem}.footer .icons{margin-bottom:12px}.footer .icons .iconfont{padding:0 10px;font-size:1.3rem}.footer a{color:inherit}.footer a:hover{color:#4274f4}@media (min-width:720px){.sidebar-open .footer{width:auto;padding-left:19.5rem}}@media (min-width:1520px){.have-rightmenu .footer{padding-right:231.5px}}.no-sidebar .footer{width:auto;padding-left:1.5rem}.body-bg{position:fixed;left:0;top:0;z-index:-999999;height:100vh;width:100vw;transition:background .5s}.theme-mode-light{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-]::-moz-selection,.theme-mode-light code[class*=language-] ::-moz-selection,.theme-mode-light pre[class*=language-]::-moz-selection,.theme-mode-light pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-]::selection,.theme-mode-light code[class*=language-] ::selection,.theme-mode-light pre[class*=language-]::selection,.theme-mode-light pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-],.theme-mode-light pre[class*=language-]{background:#f5f2f0}.theme-mode-light .token.cdata,.theme-mode-light .token.comment,.theme-mode-light .token.doctype,.theme-mode-light .token.prolog{color:#708090}.theme-mode-light .token.punctuation{color:#999}.theme-mode-light .namespace{opacity:.7}.theme-mode-light .token.boolean,.theme-mode-light .token.constant,.theme-mode-light .token.deleted,.theme-mode-light .token.number,.theme-mode-light .token.property,.theme-mode-light .token.symbol,.theme-mode-light .token.tag{color:#905}.theme-mode-light .token.attr-name,.theme-mode-light .token.builtin,.theme-mode-light .token.char,.theme-mode-light .token.inserted,.theme-mode-light .token.selector,.theme-mode-light .token.string{color:#690}.theme-mode-light .language-css .token.string,.theme-mode-light .style .token.string,.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule,.theme-mode-light .token.attr-value,.theme-mode-light .token.keyword{color:#07a}.theme-mode-light .token.class-name,.theme-mode-light .token.function{color:#dd4a68}.theme-mode-light .token.important,.theme-mode-light .token.regex,.theme-mode-light .token.variable{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted,.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light{--bodyBg:#fff}.theme-style-line.theme-mode-dark{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read{--bodyBg:#f5f5d5}.theme-mode-light{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-],.theme-mode-light pre[class*=language-]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment,.theme-mode-light .token.cdata,.theme-mode-light .token.comment,.theme-mode-light .token.doctype,.theme-mode-light .token.prolog{color:#999}.theme-mode-light .token.punctuation{color:#ccc}.theme-mode-light .token.attr-name,.theme-mode-light .token.deleted,.theme-mode-light .token.namespace,.theme-mode-light .token.tag{color:#e2777a}.theme-mode-light .token.function-name{color:#6196cc}.theme-mode-light .token.boolean,.theme-mode-light .token.function,.theme-mode-light .token.number{color:#f08d49}.theme-mode-light .token.class-name,.theme-mode-light .token.constant,.theme-mode-light .token.property,.theme-mode-light .token.symbol{color:#f8c555}.theme-mode-light .token.atrule,.theme-mode-light .token.builtin,.theme-mode-light .token.important,.theme-mode-light .token.keyword,.theme-mode-light .token.selector{color:#cc99cd}.theme-mode-light .token.attr-value,.theme-mode-light .token.char,.theme-mode-light .token.regex,.theme-mode-light .token.string,.theme-mode-light .token.variable{color:#7ec699}.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{color:#67cdcc}.theme-mode-light .language-css .token.string,.theme-mode-light .style .token.string,.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{background:none}.theme-mode-light .token.bold,.theme-mode-light .token.important{font-weight:700}.theme-mode-light .token.italic{font-style:italic}.theme-mode-light .token.entity{cursor:help}.theme-mode-light .token.inserted{color:green}.theme-mode-dark{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-],.theme-mode-dark pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-],.theme-mode-dark pre[class*=language-]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment,.theme-mode-dark .token.cdata,.theme-mode-dark .token.comment,.theme-mode-dark .token.doctype,.theme-mode-dark .token.prolog{color:#999}.theme-mode-dark .token.punctuation{color:#ccc}.theme-mode-dark .token.attr-name,.theme-mode-dark .token.deleted,.theme-mode-dark .token.namespace,.theme-mode-dark .token.tag{color:#e2777a}.theme-mode-dark .token.function-name{color:#6196cc}.theme-mode-dark .token.boolean,.theme-mode-dark .token.function,.theme-mode-dark .token.number{color:#f08d49}.theme-mode-dark .token.class-name,.theme-mode-dark .token.constant,.theme-mode-dark .token.property,.theme-mode-dark .token.symbol{color:#f8c555}.theme-mode-dark .token.atrule,.theme-mode-dark .token.builtin,.theme-mode-dark .token.important,.theme-mode-dark .token.keyword,.theme-mode-dark .token.selector{color:#cc99cd}.theme-mode-dark .token.attr-value,.theme-mode-dark .token.char,.theme-mode-dark .token.regex,.theme-mode-dark .token.string,.theme-mode-dark .token.variable{color:#7ec699}.theme-mode-dark .token.entity,.theme-mode-dark .token.operator,.theme-mode-dark .token.url{color:#67cdcc}.theme-mode-dark .language-css .token.string,.theme-mode-dark .style .token.string,.theme-mode-dark .token.entity,.theme-mode-dark .token.operator,.theme-mode-dark .token.url{background:none}.theme-mode-dark .token.bold,.theme-mode-dark .token.important{font-weight:700}.theme-mode-dark .token.italic{font-style:italic}.theme-mode-dark .token.entity{cursor:help}.theme-mode-dark .token.inserted{color:green}.theme-mode-read{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-],.theme-mode-read pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-],.theme-mode-read pre[class*=language-]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment,.theme-mode-read .token.cdata,.theme-mode-read .token.comment,.theme-mode-read .token.doctype,.theme-mode-read .token.prolog{color:#999}.theme-mode-read .token.punctuation{color:#ccc}.theme-mode-read .token.attr-name,.theme-mode-read .token.deleted,.theme-mode-read .token.namespace,.theme-mode-read .token.tag{color:#e2777a}.theme-mode-read .token.function-name{color:#6196cc}.theme-mode-read .token.boolean,.theme-mode-read .token.function,.theme-mode-read .token.number{color:#f08d49}.theme-mode-read .token.class-name,.theme-mode-read .token.constant,.theme-mode-read .token.property,.theme-mode-read .token.symbol{color:#f8c555}.theme-mode-read .token.atrule,.theme-mode-read .token.builtin,.theme-mode-read .token.important,.theme-mode-read .token.keyword,.theme-mode-read .token.selector{color:#cc99cd}.theme-mode-read .token.attr-value,.theme-mode-read .token.char,.theme-mode-read .token.regex,.theme-mode-read .token.string,.theme-mode-read .token.variable{color:#7ec699}.theme-mode-read .token.entity,.theme-mode-read .token.operator,.theme-mode-read .token.url{color:#67cdcc}.theme-mode-read .language-css .token.string,.theme-mode-read .style .token.string,.theme-mode-read .token.entity,.theme-mode-read .token.operator,.theme-mode-read .token.url{background:none}.theme-mode-read .token.bold,.theme-mode-read .token.important{font-weight:700}.theme-mode-read .token.italic{font-style:italic}.theme-mode-read .token.entity{cursor:help}.theme-mode-read .token.inserted{color:green}.custom-html-window{position:fixed;bottom:0;display:flex;overflow:hidden;font-weight:350}@media (max-width:960px){.custom-html-window{display:none}}.custom-html-window .custom-wrapper{position:relative;max-width:200px;max-height:400px}.custom-html-window .custom-wrapper .close-but{cursor:pointer;position:absolute;right:0;top:0;font-size:1.5rem;line-height:1.5rem;width:1.5rem;height:1.5rem;opacity:0;transition:all .2s}.custom-html-window .custom-wrapper .close-but:hover{opacity:.9}.custom-html-window .custom-wrapper:hover .close-but{opacity:.7}.custom-html-window.custom-html-window-lb{left:0;z-index:99}.custom-html-window.custom-html-window-lb>*{align-self:flex-end}.custom-html-window.custom-html-window-rb{right:80px;z-index:10;justify-content:flex-end}.custom-html-window.custom-html-window-rb>*{align-self:flex-end}.become-sponsor{padding:8px 20px;display:inline-block;color:#11a8cd;border-radius:30px;box-sizing:border-box;border:1px solid #11a8cd}.theme-mode-light[data-v-d5affa18]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-d5affa18]::-moz-selection,.theme-mode-light code[class*=language-][data-v-d5affa18] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-d5affa18]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-d5affa18] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-d5affa18]::selection,.theme-mode-light code[class*=language-][data-v-d5affa18] ::selection,.theme-mode-light pre[class*=language-][data-v-d5affa18]::selection,.theme-mode-light pre[class*=language-][data-v-d5affa18] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-d5affa18],.theme-mode-light .token.comment[data-v-d5affa18],.theme-mode-light .token.doctype[data-v-d5affa18],.theme-mode-light .token.prolog[data-v-d5affa18]{color:#708090}.theme-mode-light .token.punctuation[data-v-d5affa18]{color:#999}.theme-mode-light .namespace[data-v-d5affa18]{opacity:.7}.theme-mode-light .token.boolean[data-v-d5affa18],.theme-mode-light .token.constant[data-v-d5affa18],.theme-mode-light .token.deleted[data-v-d5affa18],.theme-mode-light .token.number[data-v-d5affa18],.theme-mode-light .token.property[data-v-d5affa18],.theme-mode-light .token.symbol[data-v-d5affa18],.theme-mode-light .token.tag[data-v-d5affa18]{color:#905}.theme-mode-light .token.attr-name[data-v-d5affa18],.theme-mode-light .token.builtin[data-v-d5affa18],.theme-mode-light .token.char[data-v-d5affa18],.theme-mode-light .token.inserted[data-v-d5affa18],.theme-mode-light .token.selector[data-v-d5affa18],.theme-mode-light .token.string[data-v-d5affa18]{color:#690}.theme-mode-light .language-css .token.string[data-v-d5affa18],.theme-mode-light .style .token.string[data-v-d5affa18],.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-d5affa18],.theme-mode-light .token.attr-value[data-v-d5affa18],.theme-mode-light .token.keyword[data-v-d5affa18]{color:#07a}.theme-mode-light .token.class-name[data-v-d5affa18],.theme-mode-light .token.function[data-v-d5affa18]{color:#dd4a68}.theme-mode-light .token.important[data-v-d5affa18],.theme-mode-light .token.regex[data-v-d5affa18],.theme-mode-light .token.variable[data-v-d5affa18]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-d5affa18],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-d5affa18]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-d5affa18]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-d5affa18]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-d5affa18]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-d5affa18]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-d5affa18]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-d5affa18]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-d5affa18],.theme-mode-light .token.cdata[data-v-d5affa18],.theme-mode-light .token.comment[data-v-d5affa18],.theme-mode-light .token.doctype[data-v-d5affa18],.theme-mode-light .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-light .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-light .token.attr-name[data-v-d5affa18],.theme-mode-light .token.deleted[data-v-d5affa18],.theme-mode-light .token.namespace[data-v-d5affa18],.theme-mode-light .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-light .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-light .token.boolean[data-v-d5affa18],.theme-mode-light .token.function[data-v-d5affa18],.theme-mode-light .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-light .token.class-name[data-v-d5affa18],.theme-mode-light .token.constant[data-v-d5affa18],.theme-mode-light .token.property[data-v-d5affa18],.theme-mode-light .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-light .token.atrule[data-v-d5affa18],.theme-mode-light .token.builtin[data-v-d5affa18],.theme-mode-light .token.important[data-v-d5affa18],.theme-mode-light .token.keyword[data-v-d5affa18],.theme-mode-light .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-d5affa18],.theme-mode-light .token.char[data-v-d5affa18],.theme-mode-light .token.regex[data-v-d5affa18],.theme-mode-light .token.string[data-v-d5affa18],.theme-mode-light .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-d5affa18],.theme-mode-light .style .token.string[data-v-d5affa18],.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{background:none}.theme-mode-light .token.bold[data-v-d5affa18],.theme-mode-light .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-light .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-light .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-light .token.inserted[data-v-d5affa18]{color:green}.theme-mode-dark[data-v-d5affa18]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-d5affa18],.theme-mode-dark pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-dark pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-d5affa18],.theme-mode-dark .token.cdata[data-v-d5affa18],.theme-mode-dark .token.comment[data-v-d5affa18],.theme-mode-dark .token.doctype[data-v-d5affa18],.theme-mode-dark .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-dark .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-d5affa18],.theme-mode-dark .token.deleted[data-v-d5affa18],.theme-mode-dark .token.namespace[data-v-d5affa18],.theme-mode-dark .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-d5affa18],.theme-mode-dark .token.function[data-v-d5affa18],.theme-mode-dark .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-d5affa18],.theme-mode-dark .token.constant[data-v-d5affa18],.theme-mode-dark .token.property[data-v-d5affa18],.theme-mode-dark .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-d5affa18],.theme-mode-dark .token.builtin[data-v-d5affa18],.theme-mode-dark .token.important[data-v-d5affa18],.theme-mode-dark .token.keyword[data-v-d5affa18],.theme-mode-dark .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-d5affa18],.theme-mode-dark .token.char[data-v-d5affa18],.theme-mode-dark .token.regex[data-v-d5affa18],.theme-mode-dark .token.string[data-v-d5affa18],.theme-mode-dark .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-dark .token.entity[data-v-d5affa18],.theme-mode-dark .token.operator[data-v-d5affa18],.theme-mode-dark .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-d5affa18],.theme-mode-dark .style .token.string[data-v-d5affa18],.theme-mode-dark .token.entity[data-v-d5affa18],.theme-mode-dark .token.operator[data-v-d5affa18],.theme-mode-dark .token.url[data-v-d5affa18]{background:none}.theme-mode-dark .token.bold[data-v-d5affa18],.theme-mode-dark .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-dark .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-dark .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-dark .token.inserted[data-v-d5affa18]{color:green}.theme-mode-read[data-v-d5affa18]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-d5affa18],.theme-mode-read pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-read pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-d5affa18],.theme-mode-read .token.cdata[data-v-d5affa18],.theme-mode-read .token.comment[data-v-d5affa18],.theme-mode-read .token.doctype[data-v-d5affa18],.theme-mode-read .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-read .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-read .token.attr-name[data-v-d5affa18],.theme-mode-read .token.deleted[data-v-d5affa18],.theme-mode-read .token.namespace[data-v-d5affa18],.theme-mode-read .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-read .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-read .token.boolean[data-v-d5affa18],.theme-mode-read .token.function[data-v-d5affa18],.theme-mode-read .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-read .token.class-name[data-v-d5affa18],.theme-mode-read .token.constant[data-v-d5affa18],.theme-mode-read .token.property[data-v-d5affa18],.theme-mode-read .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-read .token.atrule[data-v-d5affa18],.theme-mode-read .token.builtin[data-v-d5affa18],.theme-mode-read .token.important[data-v-d5affa18],.theme-mode-read .token.keyword[data-v-d5affa18],.theme-mode-read .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-d5affa18],.theme-mode-read .token.char[data-v-d5affa18],.theme-mode-read .token.regex[data-v-d5affa18],.theme-mode-read .token.string[data-v-d5affa18],.theme-mode-read .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-read .token.entity[data-v-d5affa18],.theme-mode-read .token.operator[data-v-d5affa18],.theme-mode-read .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-d5affa18],.theme-mode-read .style .token.string[data-v-d5affa18],.theme-mode-read .token.entity[data-v-d5affa18],.theme-mode-read .token.operator[data-v-d5affa18],.theme-mode-read .token.url[data-v-d5affa18]{background:none}.theme-mode-read .token.bold[data-v-d5affa18],.theme-mode-read .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-read .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-read .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-read .token.inserted[data-v-d5affa18]{color:green}.badge[data-v-d5affa18]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-d5affa18],.badge.tip[data-v-d5affa18],.badge[data-v-d5affa18]{background-color:#42b983}.badge.error[data-v-d5affa18]{background-color:#da5961}.badge.warn[data-v-d5affa18],.badge.warning[data-v-d5affa18],.badge.yellow[data-v-d5affa18]{background-color:#e7c000}.badge+.badge[data-v-d5affa18]{margin-left:5px} \ No newline at end of file diff --git a/assets/img/a1.578566de.png b/assets/img/a1.578566de.png new file mode 100644 index 00000000..c4fbb63c Binary files /dev/null and b/assets/img/a1.578566de.png differ diff --git a/assets/img/a2.58603eb1.png b/assets/img/a2.58603eb1.png new file mode 100644 index 00000000..cb9e4469 Binary files /dev/null and b/assets/img/a2.58603eb1.png differ diff --git a/assets/img/search.237d6f6a.svg b/assets/img/search.237d6f6a.svg new file mode 100644 index 00000000..18ed22ab --- /dev/null +++ b/assets/img/search.237d6f6a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/js/10.aefeccb2.js b/assets/js/10.aefeccb2.js new file mode 100644 index 00000000..633720f2 --- /dev/null +++ b/assets/js/10.aefeccb2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{375:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("1、目前的原生部署包支持mac、linux、windows三个平台")]),t._v(" "),s("p",[t._v("2、这三个平台的部署包均由作者分别测试通过")]),t._v(" "),s("p",[t._v("3、尽管如此,仍然可能存在有的机器不支持的情况,可自行拉取仓库源码编译出目标平台可执行文件、或换成其它部署方式")]),t._v(" "),s("p",[t._v("4、若linux/mac下提示文件没有执行权限,可执行"),s("code",[t._v("chmod +x {文件路径}")]),t._v("解决")]),t._v(" "),s("p",[t._v("5、若mac下运行提示移到废纸篓,可执行"),s("code",[t._v("sudo xattr -rd com.apple.quarantine {文件路径}")]),t._v("解决")])]),t._v(" "),s("h2",{attrs:{id:"_1、安装包下载"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1、安装包下载"}},[t._v("#")]),t._v(" 1、安装包下载")]),t._v(" "),s("ul",[s("li",[t._v("打开"),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发行版页面"),s("OutboundLink")],1),t._v(",下载所需的最新的release包:")]),t._v(" "),s("li",[t._v("比如服务器为linux则可下载"),s("code",[t._v("neutrino-proxy-server-linux-2.0.2-native.zip")]),t._v("文件,客户端为windows则可下载"),s("code",[t._v("neutrino-proxy-client-windows-2.0.2-native.zip")])])]),t._v(" "),s("h2",{attrs:{id:"_2、部署服务端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务端"}},[t._v("#")]),t._v(" 2、部署服务端")]),t._v(" "),s("ul",[s("li",[t._v("将服务端安装包上传至服务器,并解压")]),t._v(" "),s("li",[t._v("服务端默认使用h2数据库,若需要改为mysql,则可修改安装包"),s("code",[t._v("app.yml")]),t._v("内的数据库配置,如下:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mysql\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("mysql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxxx"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("3306/neutrino"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("proxy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("?")]),t._v("useUnicode=true"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("driver-class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" com.mysql.jdbc.Driver\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库帐号")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n")])])]),s("ul",[s("li",[t._v("然后直接启动服务端可执行程序即可")])]),t._v(" "),s("h2",{attrs:{id:"_3、部署客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3、部署客户端"}},[t._v("#")]),t._v(" 3、部署客户端")]),t._v(" "),s("ul",[s("li",[t._v("本地解压客户端安装包")]),t._v(" "),s("li",[t._v("修改"),s("code",[t._v("app.yml")]),t._v("文件中的server-ip为服务器公网ip,并配置license-key,以下是相关的部分配置:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用ssl")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n")])])]),s("ul",[s("li",[t._v("然后直接启动客户端可执行程序即可")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/11.83da976e.js b/assets/js/11.83da976e.js new file mode 100644 index 00000000..7adb323b --- /dev/null +++ b/assets/js/11.83da976e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{376:function(s,t,a){"use strict";a.r(t);var e=a(14),r=Object(e.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h2",{attrs:{id:"_1、-部署服务端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、-部署服务端"}},[s._v("#")]),s._v(" 1、 部署服务端")]),s._v(" "),t("h3",{attrs:{id:"使用默认h2数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认h2数据库一键部署"}},[s._v("#")]),s._v(" 使用默认h2数据库一键部署")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-server-h2\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])]),t("h3",{attrs:{id:"使用默认mysql数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认mysql数据库一键部署"}},[s._v("#")]),s._v(" 使用默认mysql数据库一键部署")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-server-mysql\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])]),t("h2",{attrs:{id:"_2、部署客户端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署客户端"}},[s._v("#")]),s._v(" 2、部署客户端")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-client\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/12.28575ea2.js b/assets/js/12.28575ea2.js new file mode 100644 index 00000000..bb4791b4 --- /dev/null +++ b/assets/js/12.28575ea2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{377:function(e,i,s){"use strict";s.r(i);var v=s(14),_=Object(v.a)({},(function(){var e=this,i=e._self._c;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"首页"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#首页"}},[e._v("#")]),e._v(" 首页")]),e._v(" "),i("ul",[i("li",[e._v("License统计:统计License相关数量指标")]),e._v(" "),i("li",[e._v("端口映射统计:统计端口映射相关数量指标")]),e._v(" "),i("li",[e._v("今日流量:统计当天的服务端上行/下行流量数据")]),e._v(" "),i("li",[e._v("流量汇总:统计所有(包含当天)的服务端上行/下行流量数据")]),e._v(" "),i("li",[e._v("流量监控:按天统计最近15天(可能会动态调整)每天的上行流量、下行流量、汇总流量")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/home.png")}})]),e._v(" "),i("h1",{attrs:{id:"代理配置"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#代理配置"}},[e._v("#")]),e._v(" 代理配置")]),e._v(" "),i("ul",[i("li",[e._v("License管理:License是客户端连接服务端的唯一合法凭证。一个License同时只能被一个客户端使用,一个License可以维护多条端口映射")]),e._v(" "),i("li",[e._v("端口映射:服务端IP+端口 -> 客户端IP+端口的四元组映射(因目前服务端单节点只有一个公网IP,所以不体现出来),是内网穿透的基本单元。")]),e._v(" "),i("li",[e._v("限速:\n"),i("ul",[i("li",[e._v("默认所有代理没有限速")]),e._v(" "),i("li",[e._v("对License限速,将使得License下的所有端口映射都被限速")]),e._v(" "),i("li",[e._v("若License设置了限速,License下的某条映射也设置了限速,则对于该映射优先采用端口映射上的限速规则")])])]),e._v(" "),i("li",[e._v("域名管理:用于管理服务器主域名和证书,用于支持域名映射。一个主域名域名可以创建多个域名映射(配置不同的子域名)。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/license2.png")}}),e._v(" "),i("img",{attrs:{src:e.$withBase("/img/run-example/port-mapping2.png")}})]),e._v(" "),i("h1",{attrs:{id:"安全组"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#安全组"}},[e._v("#")]),e._v(" 安全组")]),e._v(" "),i("p",[e._v("一个端口映射可绑定一个安全组,通过安全组的默认放行类型 + 安全组下的安全规则 控制该端口映射的安全访问规则。")]),e._v(" "),i("ul",[i("li",[e._v("场景1: 内部服务,穿透出来自己使用,不希望被其他人访问。端口映射可关联一个默认放行类型为“拒绝”的安全组,安全组下新增安全规则,将本地的出口ip添加到允许放行规则中。")]),e._v(" "),i("li",[e._v("场景2:公网服务,穿透出来开放给大家使用,但是希望拒绝某些IP访问。端口映射可关联一个默认放行类型为“允许”的安全组,安全组下新增安全规则,将黑名单ip添加到拒绝放行规则中。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/security-group1.png")}}),e._v(" "),i("img",{attrs:{src:e.$withBase("/img/run-example/security-rule1.png")}})]),e._v(" "),i("h1",{attrs:{id:"系统管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#系统管理"}},[e._v("#")]),e._v(" 系统管理")]),e._v(" "),i("ul",[i("li",[e._v("用户管理:支持多用户,一个用户可持有多个License。由于项目目前主推个人版,所以暂是没有权限这一套,管理员之外的所有用户都属于游客。对于绝大多数操作,游客仅有只读权限。")]),e._v(" "),i("li",[e._v("端口池管理:用于统一管理服务器内网穿透端口,方便统一设置安全组。")]),e._v(" "),i("li",[e._v("端口池分组:对端口池的一个分组。\n"),i("ul",[i("li",[e._v("全局分组:该分组下的端口全局通用。")]),e._v(" "),i("li",[e._v("用户分组:该分组下的端口由分组绑定的用户独占。")]),e._v(" "),i("li",[e._v("License分组:该分组下的端口由分组绑定的License独占。")])])]),e._v(" "),i("li",[e._v("调度管理:维护服务端定时任务。方便开发、调试。正常使用时无需关心。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/user-manager1.png")}})]),e._v(" "),i("h1",{attrs:{id:"报表管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#报表管理"}},[e._v("#")]),e._v(" 报表管理")]),e._v(" "),i("ul",[i("li",[e._v("用户流量报表:基于用户维度的流量统计")]),e._v(" "),i("li",[e._v("License流量报表:基于License的流量统计")]),e._v(" "),i("li",[e._v("用户流量月度明细:基于用户的流量月度统计")]),e._v(" "),i("li",[e._v("License流量月度明细:基于License的流量月度统计")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/user-flow1.png")}})]),e._v(" "),i("h1",{attrs:{id:"日志管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#日志管理"}},[e._v("#")]),e._v(" 日志管理")]),e._v(" "),i("ul",[i("li",[e._v("调度日志:服务端定时任务执行日志")]),e._v(" "),i("li",[e._v("登录日志:管理后端登录、退出登录的日志")]),e._v(" "),i("li",[e._v("客户端连接日志:客户端连接、断开的日志")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/login-log1.png")}})])])}),[],!1,null,null,null);i.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/13.2bc54ade.js b/assets/js/13.2bc54ade.js new file mode 100644 index 00000000..3ad7862f --- /dev/null +++ b/assets/js/13.2bc54ade.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{378:function(t,v,_){"use strict";_.r(v);var s=_(14),a=Object(s.a)({},(function(){var t=this,v=t._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"端口池"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口池"}},[t._v("#")]),t._v(" 端口池")]),t._v(" "),v("blockquote",[v("p",[t._v("端口池用于统一、集中管理服务端代理对外开放的代理端口。")])]),t._v(" "),v("ul",[v("li",[t._v("1、这里不包含服务端启动本身所需要的一些特殊端口,如:WEB端口、对客户端开放的端口(9000、9002)、HTTP代理端口。")]),t._v(" "),v("li",[t._v("2、端口映射里所有的服务端端口,都包含在端口池内。方便了统一管理、安全组/防火墙设置。")])]),t._v(" "),v("h1",{attrs:{id:"端口池分组"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口池分组"}},[t._v("#")]),t._v(" 端口池分组")]),t._v(" "),v("blockquote",[v("p",[t._v("顾名思义,它是对端口池下的端口做了一个划分。")])]),t._v(" "),v("ul",[v("li",[t._v("1、允许同一个分组内的端口拥有特定的归属。比如:全局分组下的端口,进行代理时所有用户共享,这里极端情况下涉及到端口抢占问题。而用户分组下的端口,归属于某一个特定的用户。\nLicense分组下的端口,归属于某一个特定的License。")]),t._v(" "),v("li",[t._v("2、该划分,使得特定的用户、License能够独占一部分端口。为后续更多场景下代理,避免端口被占用提供了支持。")])]),t._v(" "),v("h1",{attrs:{id:"端口映射"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口映射"}},[t._v("#")]),t._v(" 端口映射")]),t._v(" "),v("blockquote",[v("p",[t._v("当前版本代理功能的基本单元。")])]),t._v(" "),v("ul",[v("li",[t._v("1、该映射由一个四元组唯一标识(代理服务端IP、代理服务端端口、被代理服务局域网IP、被代理服务端口)。")]),t._v(" "),v("li",[t._v("2、由于本项目为个人版,代理服务端仅支持一个节点,所以四元组中的服务端IP可以省略,不在端口映射管理中体现。")]),t._v(" "),v("li",[t._v("3、代理成功的情况下,通过访问代理服务端IP+端口,可以达到访问内网被代理服务IP+端口的同等效果")]),t._v(" "),v("li",[t._v("4、例如:本地启动一个socket服务,需要和异地的同事联调。可以通过中微子代理jetbrains客户端插件(后续会推出)将本地socket端口代理至公网。同事通过访问代理服务端公网IP+端口进行调试。")])]),t._v(" "),v("h1",{attrs:{id:"基础端口说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基础端口说明"}},[t._v("#")]),t._v(" 基础端口说明")]),t._v(" "),v("ul",[v("li",[t._v("WEB端口:服务端API、后台管理访问端口,默认为:8888")]),t._v(" "),v("li",[t._v("服务端等待客户端连接的端口,非SSL:默认9000,SSL端口:默认9002(若不需要SSL支持,可不配置SSL端口)")]),t._v(" "),v("li",[t._v("HTTP代理端口:默认80,用于域名映射,若无需域名映射,可以忽略。")])])])}),[],!1,null,null,null);v.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/14.239eae84.js b/assets/js/14.239eae84.js new file mode 100644 index 00000000..0b50c1de --- /dev/null +++ b/assets/js/14.239eae84.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{379:function(t,a,s){"use strict";s.r(a);var r=s(14),_=Object(r.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"什么是域名映射"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是域名映射"}},[t._v("#")]),t._v(" 什么是域名映射?")]),t._v(" "),a("p",[t._v("域名映射是将指定端口映射绑定到某一个子域名上,通过直接访问域名的方式,达到访问被代理服务的目的。\n支持维护多个主域名并为多个主域名配置不同的子域名实现域名映射。")]),t._v(" "),a("h1",{attrs:{id:"域名映射能解决什么问题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射能解决什么问题"}},[t._v("#")]),t._v(" 域名映射能解决什么问题?")]),t._v(" "),a("ul",[a("li",[t._v("1、当服务端端口需要经常变动的时候,可以通过固定域名的方式,使得开发调试能够长期稳定的进行,不用每次更改访问地址。")]),t._v(" "),a("li",[t._v("2、使用域名可以使用有意义的名称方便记忆")]),t._v(" "),a("li",[t._v("3、调试某些第三方回调时,回调地址不能填写IP+端口的形式,此时需要域名来完成")])]),t._v(" "),a("h1",{attrs:{id:"域名映射的大致流程"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射的大致流程"}},[t._v("#")]),t._v(" 域名映射的大致流程?")]),t._v(" "),a("blockquote",[a("p",[t._v("例如你有一个已备案的域名:asgc.fun,以下是使用域名映射的大致流程")])]),t._v(" "),a("h2",{attrs:{id:"情况1-代理服务端使用80端口"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#情况1-代理服务端使用80端口"}},[t._v("#")]),t._v(" 情况1:代理服务端使用80端口")]),t._v(" "),a("ul",[a("li",[t._v("1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP")]),t._v(" "),a("li",[t._v("2、服务端管理后台域名管理新建域名,如:asgc.fun")]),t._v(" "),a("li",[t._v("3、服务端管理后台新建端口映射,协议选择:HTTP(S),选择主域名并设置好子域名,如:test1.proxy")]),t._v(" "),a("li",[t._v("4、配置好客户端并启动,代理映射完成")]),t._v(" "),a("li",[t._v("5、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务")])]),t._v(" "),a("h2",{attrs:{id:"情况2-代理服务端不使用80端口-80端口被nginx占用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#情况2-代理服务端不使用80端口-80端口被nginx占用"}},[t._v("#")]),t._v(" 情况2:代理服务端不使用80端口,80端口被nginx占用")]),t._v(" "),a("blockquote",[a("p",[t._v("假设代理服务端使用82作为HTTP代理端口")])]),t._v(" "),a("ul",[a("li",[t._v("1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP")]),t._v(" "),a("li",[t._v("2、nginx 80端口下将 *.proxy.asgc.fun 请求转到82端口,并附带原有请求头(特别是"),a("code",[t._v("Host")]),t._v(")")]),t._v(" "),a("li",[t._v("3、服务端管理后台域名管理新建域名,如:asgc.fun")]),t._v(" "),a("li",[t._v("4、服务端管理后台新建端口映射,协议选择:HTTP(S),设置好子域名,如:test1.proxy")]),t._v(" "),a("li",[t._v("5、配置好客户端并启动,代理映射完成")]),t._v(" "),a("li",[t._v("6、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务")])]),t._v(" "),a("h1",{attrs:{id:"所有的代理映射都能绑定域名吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#所有的代理映射都能绑定域名吗"}},[t._v("#")]),t._v(" 所有的代理映射都能绑定域名吗?")]),t._v(" "),a("p",[t._v("不行的。之所以能实现域名绑定,原因是HTTP请求附带了Host请求头,包含了请求的域名信息,代理服务端能根据请求的域名做分发。而TCP协议本身并不包含域名,因此无法实现。\n所以,目前只有HTTP(涵盖HTTPS)协议能支持。")]),t._v(" "),a("h1",{attrs:{id:"域名映射支持https吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射支持https吗"}},[t._v("#")]),t._v(" 域名映射支持HTTPS吗?")]),t._v(" "),a("p",[t._v("支持的。在服务端管理后台-域名管理中新建域名并上传域名对应的服务器证书,可以选择强制HTTPS,这样会拦截所有HTTP请求,只支持通过HTTPS访问。\n如果上传后的证书仍不支持HTTPS访问,请确保上传证书有效并且和配置的主域名或完整域名映射匹配。")]),t._v(" "),a("h1",{attrs:{id:"上传服务器证书的文件有要求吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#上传服务器证书的文件有要求吗"}},[t._v("#")]),t._v(" 上传服务器证书的文件有要求吗?")]),t._v(" "),a("p",[t._v("有的。目前只支持通过jks文件上传服务器证书,jks文件中只包含服务器证书(如:.cer文件),并设置密码。")]),t._v(" "),a("h1",{attrs:{id:"代理服务端使用非80端口时-nginx配置示例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#代理服务端使用非80端口时-nginx配置示例"}},[t._v("#")]),t._v(" 代理服务端使用非80端口时,nginx配置示例")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('server {\n listen 80;\n # 此处配不配貌似不影响\n server_name localhost *.neutrino-proxy.asgc.fun;\n\n location / {\n if ($http_host ~* "(.*?).neutrino-proxy.asgc.fun") {\n # 转发到代理服务端HTTP代理端口\n proxy_pass http://localhost:8899; \n }\n\n tcp_nodelay on;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上\n\n root html;\n index index.html index.htm;\n }\n}\n')])])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/15.9c7084a5.js b/assets/js/15.9c7084a5.js new file mode 100644 index 00000000..347a1c3f --- /dev/null +++ b/assets/js/15.9c7084a5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{380:function(t,v,_){"use strict";_.r(v);var s=_(14),l=Object(s.a)({},(function(){var t=this,v=t._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h2",{attrs:{id:"基础说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基础说明"}},[t._v("#")]),t._v(" 基础说明")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("在中微子代理中,HTTP的定位是:为ip+端口的访问形式增加域名访问的支持。因此:")]),t._v(" "),v("ul",[v("li",[t._v("如果端口映射正确配置了域名,那么该映射同时支持IP+端口、域名2种访问形式。")]),t._v(" "),v("li",[t._v("如果端口映射未配置域名,那么只能以ip+端口的形式访问,此时等价于选择TCP协议。")])])]),t._v(" "),v("li",[v("p",[t._v("在中微子代理中,HTTPS作为HTTP的一种增强行为,不作为一个单独的协议。因此:")]),t._v(" "),v("ul",[v("li",[t._v("在端口映射中只需要选择HTTP即可")]),t._v(" "),v("li",[t._v("若端口映射未正确配置域名,那么同理,此时等价于选择TCP协议。")]),t._v(" "),v("li",[t._v("若端口映射配置了域名,但是未正确配置HTTPS端口、证书,那么此时可以通过域名访问,但不支持HTTPS")]),t._v(" "),v("li",[t._v("若端口映射配置了域名,且正确配置了HTTPS端口、证书,那么此时可以通过IP+端口、http域名、https域名3种形式访问")])])])]),t._v(" "),v("h2",{attrs:{id:"https配置流程"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#https配置流程"}},[t._v("#")]),t._v(" HTTPS配置流程")]),t._v(" "),v("ul",[v("li",[t._v("按照域名映射流程,完成域名的配置")]),t._v(" "),v("li",[t._v("在服务端管理后台上传对应域名的HTTPS证书信息(此处应该是通配符证书)")])]),t._v(" "),v("h2",{attrs:{id:"https端口问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#https端口问题"}},[t._v("#")]),t._v(" HTTPS端口问题")]),t._v(" "),v("ul",[v("li",[t._v("与HTTP类似,HTTPS也有一个默认端口:443,默认情况下需要占用服务端443端口")]),t._v(" "),v("li",[t._v("如果代理服务端不能独占443端口,此处可以指定任意端口,但需要在nginx中配置443端口的转发规则。此处与域名映射中代理服务端不使用80端口的情况类似")])])])}),[],!1,null,null,null);v.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/16.db6de795.js b/assets/js/16.db6de795.js new file mode 100644 index 00000000..234c89f5 --- /dev/null +++ b/assets/js/16.db6de795.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{381:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("2.0.2版本,服务端配置格式有所调整。从之前的版本升级的,需要注意")])]),t._v(" "),s("h1",{attrs:{id:"以下是最新的服务端配置格式-app-yml"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#以下是最新的服务端配置格式-app-yml"}},[t._v("#")]),t._v(" 以下是最新的服务端配置格式(app.yml)")]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端web端口,用于支持HTTP接口,管理后台页面访问")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("WEB_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("8888")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 日志级别")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("level")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("LOG_LEVEL"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("info"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道相关配置-用于维持服务端与客户端的通信")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道非SSL端口")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("OPEN_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL端口")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SSL_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL证书配置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("STORE_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-manager-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("MGR_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("JKS_PATH"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("TUNNEL_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tcp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# http代理端口,默认80")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("http-proxy-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HTTP_PROXY_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# https代理端口,默认443 (需要配置域名、证书)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("https-proxy-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HTTPS_PROXY_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启代理服务报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("udp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启代理服务报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库类型,目前支持sqlite、mysql、mariadb")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_TYPE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("h2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库连接URL")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_URL"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("h2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("./data/db;MODE=MySQL;AUTO_SERVER=TRUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库用户名")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_USER"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_PASSWORD"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/17.5a8480e4.js b/assets/js/17.5a8480e4.js new file mode 100644 index 00000000..676db1be --- /dev/null +++ b/assets/js/17.5a8480e4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{382:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("1.9.0版本,客户端配置格式有所调整。从之前的版本升级的,需要注意")])]),t._v(" "),s("h1",{attrs:{id:"以下是最新的客户端配置格式-app-yml"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#以下是最新的客户端配置格式-app-yml"}},[t._v("#")]),t._v(" 以下是最新的客户端配置格式(app.yml)")]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 日志级别")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("solon.logging.logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v('"root"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("level")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" info\n \n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL证书配置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("STORE_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("JKS_PATH"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_IP"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("localhost"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用SSL(注意:该配置必须和server-port对应上)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SSL_ENABLE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 客户端连接唯一凭证")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("LICENSE_KEY"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("client-id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_ID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启心跳日志")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("heartbeat-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HEARTBEAT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 重连设置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("reconnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 重连间隔(秒)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("interval-seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启无限重连(未开启时,客户端license不合法会自动停止应用,开启了则不会,请谨慎开启)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unlimited")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("client")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("udp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# udp傀儡端口范围")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("puppet-port-range")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 10000"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10500")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/18.9d247656.js b/assets/js/18.9d247656.js new file mode 100644 index 00000000..086107be --- /dev/null +++ b/assets/js/18.9d247656.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{383:function(e,_,l){"use strict";l.r(_);var v=l(14),a=Object(v.a)({},(function(){var e=this,_=e._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[_("h2",{attrs:{id:"_1-1-启动日志包含not-found-license-key-config相关字样"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_1-1-启动日志包含not-found-license-key-config相关字样"}},[e._v("#")]),e._v(" 1.1. 启动日志包含"),_("code",[e._v("not found license-key config")]),e._v("相关字样")]),e._v(" "),_("p",[e._v("出现这种情况,说明客户端没获取到配置的license,可按如下检查:")]),e._v(" "),_("ul",[_("li",[e._v("客户端是否有配置app.yml,app.yml中是否有配置"),_("code",[e._v("license-key")])]),e._v(" "),_("li",[e._v("客户端启动参数是否指定app.yml配置,若未指定客户端不会加载任何jar外部的配置文件")]),e._v(" "),_("li",[e._v("客户端启动参数指定的配置文件路径是否正确?如:"),_("code",[e._v("java -jar neutrino-proxy-client.jar config=app.yml")]),e._v(",代表"),_("code",[e._v("app.yml")]),e._v("文件与jar在同级别目录下,如果不在同级别目录,请使用绝对/相对路径指定")]),e._v(" "),_("li",[e._v("除此之外license还可以用以下方法直接在启动参数中指定:\n"),_("ul",[_("li",[_("code",[e._v("java -jar -DLICENSE_KEY=xxxx -DSERVER_IP=x.x.x.x -DSERVER_PORT=9000 -DSSL_ENABLE=false neutrino-proxy-client.jar")])]),e._v(" "),_("li",[_("code",[e._v("java -jar neutrino-proxy-client.jar serverIp=x.x.x.x serverPort=9000 sslEnable=false licenseKey=xxxx")])])])])]),e._v(" "),_("h2",{attrs:{id:"_1-2-配置文件确定都已经配置-且启动参数正确指定了-但是没有出现认证成功日志"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-配置文件确定都已经配置-且启动参数正确指定了-但是没有出现认证成功日志"}},[e._v("#")]),e._v(" 1.2. 配置文件确定都已经配置,且启动参数正确指定了,但是没有出现"),_("code",[e._v("认证成功日志")])]),e._v(" "),_("ul",[_("li",[e._v("确认客户端配置的"),_("code",[e._v("server-ip")]),e._v(",必须是服务端所在机器的ip,且保证客户端所在机器能正常ping通")]),e._v(" "),_("li",[e._v("确认客户端配置的"),_("code",[e._v("server-port")]),e._v("与"),_("code",[e._v("ssl-enable")]),e._v(",默认情况应配置为9000、false或9002、true,除非服务端app.yml有改动隧道对外端口")]),e._v(" "),_("li",[e._v("确认服务端对外的9000、9002端口是否已经放开")]),e._v(" "),_("li",[e._v("服务端如果采用docker部署,需要确保容器的9000、9002端口映射到宿主机")])])])}),[],!1,null,null,null);_.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/19.9da31ccd.js b/assets/js/19.9da31ccd.js new file mode 100644 index 00000000..a84fe17e --- /dev/null +++ b/assets/js/19.9da31ccd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{384:function(t,s,a){"use strict";a.r(s);var e=a(14),r=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"_2-1-https证书"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-1-https证书"}},[t._v("#")]),t._v(" 2.1. HTTPS证书")]),t._v(" "),s("p",[t._v("该证书用于服务端支持HTTPS,若需要在服务端"),s("code",[t._v("app.yml")]),t._v("中配置即可")]),t._v(" "),s("h2",{attrs:{id:"_2-2-隧道ssl证书"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-2-隧道ssl证书"}},[t._v("#")]),t._v(" 2.2. 隧道SSL证书")]),t._v(" "),s("p",[t._v("该证书用于对客户端-服务端之间的数据通信进行加密,因此客户端/服务端均需要配置该证书。可参考如下命令生成:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('keytool -genkey -alias test1 -keyalg RSA -keysize 1024 -validity 3650 -keypass 123456 -storepass 123456 -keystore "./test.jks"\n')])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/2.bcc017ba.js b/assets/js/2.bcc017ba.js new file mode 100644 index 00000000..cdd1d946 --- /dev/null +++ b/assets/js/2.bcc017ba.js @@ -0,0 +1,14 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{286:function(t,e,n){},287:function(t,e,n){},288:function(t,e,n){},289:function(t,e,n){},290:function(t,e,n){},291:function(t,e,n){},292:function(t,e,n){},293:function(t,e,n){},294:function(t,e,n){"use strict";var r=TypeError;t.exports=function(t,e){if(t + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var i="Expected a function",o="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a="[object Arguments]",u="[object Array]",l="[object Boolean]",c="[object Date]",h="[object Error]",f="[object Function]",p="[object GeneratorFunction]",g="[object Map]",d="[object Number]",v="[object Object]",m="[object RegExp]",y="[object Set]",_="[object String]",b="[object Symbol]",w="[object WeakMap]",k="[object ArrayBuffer]",x="[object DataView]",P="[object Float32Array]",C="[object Float64Array]",T="[object Int8Array]",S="[object Int16Array]",L="[object Int32Array]",A="[object Uint8Array]",B="[object Uint16Array]",M="[object Uint32Array]",O=/\b__p \+= '';/g,E=/\b(__p \+=) '' \+/g,I=/(__e\(.*?\)|\b__t\)) \+\n'';/g,D=/&(?:amp|lt|gt|quot|#39);/g,$=/[&<>"']/g,j=RegExp(D.source),Y=RegExp($.source),X=/<%-([\s\S]+?)%>/g,N=/<%([\s\S]+?)%>/g,R=/<%=([\s\S]+?)%>/g,z=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,U=/^\w*$/,H=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,F=/[\\^$.*+?()[\]{}|]/g,W=RegExp(F.source),q=/^\s+/,G=/\s/,K=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,J=/,? & /,Z=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,V=/[()=,{}\[\]\/\s]/,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,rt=/^[-+]0x[0-9a-f]+$/i,it=/^0b[01]+$/i,ot=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,at=/^(?:0|[1-9]\d*)$/,ut=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,ct=/['\n\r\u2028\u2029\\]/g,ht="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pt="[\\ud800-\\udfff]",gt="["+ft+"]",dt="["+ht+"]",vt="\\d+",mt="[\\u2700-\\u27bf]",yt="[a-z\\xdf-\\xf6\\xf8-\\xff]",_t="[^\\ud800-\\udfff"+ft+vt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",bt="\\ud83c[\\udffb-\\udfff]",wt="[^\\ud800-\\udfff]",kt="(?:\\ud83c[\\udde6-\\uddff]){2}",xt="[\\ud800-\\udbff][\\udc00-\\udfff]",Pt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ct="(?:"+yt+"|"+_t+")",Tt="(?:"+Pt+"|"+_t+")",St="(?:"+dt+"|"+bt+")"+"?",Lt="[\\ufe0e\\ufe0f]?"+St+("(?:\\u200d(?:"+[wt,kt,xt].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*"),At="(?:"+[mt,kt,xt].join("|")+")"+Lt,Bt="(?:"+[wt+dt+"?",dt,kt,xt,pt].join("|")+")",Mt=RegExp("['’]","g"),Ot=RegExp(dt,"g"),Et=RegExp(bt+"(?="+bt+")|"+Bt+Lt,"g"),It=RegExp([Pt+"?"+yt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[gt,Pt,"$"].join("|")+")",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[gt,Pt+Ct,"$"].join("|")+")",Pt+"?"+Ct+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Pt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",vt,At].join("|"),"g"),Dt=RegExp("[\\u200d\\ud800-\\udfff"+ht+"\\ufe0e\\ufe0f]"),$t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,jt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Yt=-1,Xt={};Xt[P]=Xt[C]=Xt[T]=Xt[S]=Xt[L]=Xt[A]=Xt["[object Uint8ClampedArray]"]=Xt[B]=Xt[M]=!0,Xt[a]=Xt[u]=Xt[k]=Xt[l]=Xt[x]=Xt[c]=Xt[h]=Xt[f]=Xt[g]=Xt[d]=Xt[v]=Xt[m]=Xt[y]=Xt[_]=Xt[w]=!1;var Nt={};Nt[a]=Nt[u]=Nt[k]=Nt[x]=Nt[l]=Nt[c]=Nt[P]=Nt[C]=Nt[T]=Nt[S]=Nt[L]=Nt[g]=Nt[d]=Nt[v]=Nt[m]=Nt[y]=Nt[_]=Nt[b]=Nt[A]=Nt["[object Uint8ClampedArray]"]=Nt[B]=Nt[M]=!0,Nt[h]=Nt[f]=Nt[w]=!1;var Rt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},zt=parseFloat,Ut=parseInt,Ht="object"==typeof global&&global&&global.Object===Object&&global,Ft="object"==typeof self&&self&&self.Object===Object&&self,Wt=Ht||Ft||Function("return this")(),qt=e&&!e.nodeType&&e,Gt=qt&&"object"==typeof t&&t&&!t.nodeType&&t,Kt=Gt&&Gt.exports===qt,Qt=Kt&&Ht.process,Jt=function(){try{var t=Gt&&Gt.require&&Gt.require("util").types;return t||Qt&&Qt.binding&&Qt.binding("util")}catch(t){}}(),Zt=Jt&&Jt.isArrayBuffer,Vt=Jt&&Jt.isDate,te=Jt&&Jt.isMap,ee=Jt&&Jt.isRegExp,ne=Jt&&Jt.isSet,re=Jt&&Jt.isTypedArray;function ie(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function oe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function he(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Ie(t,e){for(var n=t.length;n--&&be(e,t[n],0)>-1;);return n}function De(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var $e=Ce({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),je=Ce({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ye(t){return"\\"+Rt[t]}function Xe(t){return Dt.test(t)}function Ne(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function Re(t,e){return function(n){return t(e(n))}}function ze(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var Ke=function t(e){var n,r=(e=null==e?Wt:Ke.defaults(Wt.Object(),e,Ke.pick(Wt,jt))).Array,G=e.Date,ht=e.Error,ft=e.Function,pt=e.Math,gt=e.Object,dt=e.RegExp,vt=e.String,mt=e.TypeError,yt=r.prototype,_t=ft.prototype,bt=gt.prototype,wt=e["__core-js_shared__"],kt=_t.toString,xt=bt.hasOwnProperty,Pt=0,Ct=(n=/[^.]+$/.exec(wt&&wt.keys&&wt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Tt=bt.toString,St=kt.call(gt),Lt=Wt._,At=dt("^"+kt.call(xt).replace(F,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Bt=Kt?e.Buffer:void 0,Et=e.Symbol,Dt=e.Uint8Array,Rt=Bt?Bt.allocUnsafe:void 0,Ht=Re(gt.getPrototypeOf,gt),Ft=gt.create,qt=bt.propertyIsEnumerable,Gt=yt.splice,Qt=Et?Et.isConcatSpreadable:void 0,Jt=Et?Et.iterator:void 0,me=Et?Et.toStringTag:void 0,Ce=function(){try{var t=to(gt,"defineProperty");return t({},"",{}),t}catch(t){}}(),Qe=e.clearTimeout!==Wt.clearTimeout&&e.clearTimeout,Je=G&&G.now!==Wt.Date.now&&G.now,Ze=e.setTimeout!==Wt.setTimeout&&e.setTimeout,Ve=pt.ceil,tn=pt.floor,en=gt.getOwnPropertySymbols,nn=Bt?Bt.isBuffer:void 0,rn=e.isFinite,on=yt.join,sn=Re(gt.keys,gt),an=pt.max,un=pt.min,ln=G.now,cn=e.parseInt,hn=pt.random,fn=yt.reverse,pn=to(e,"DataView"),gn=to(e,"Map"),dn=to(e,"Promise"),vn=to(e,"Set"),mn=to(e,"WeakMap"),yn=to(gt,"create"),_n=mn&&new mn,bn={},wn=Lo(pn),kn=Lo(gn),xn=Lo(dn),Pn=Lo(vn),Cn=Lo(mn),Tn=Et?Et.prototype:void 0,Sn=Tn?Tn.valueOf:void 0,Ln=Tn?Tn.toString:void 0;function An(t){if(Fs(t)&&!Is(t)&&!(t instanceof En)){if(t instanceof On)return t;if(xt.call(t,"__wrapped__"))return Ao(t)}return new On(t)}var Bn=function(){function t(){}return function(e){if(!Hs(e))return{};if(Ft)return Ft(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Mn(){}function On(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function En(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function In(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Jn(t,e,n,r,i,o){var s,u=1&e,h=2&e,w=4&e;if(n&&(s=i?n(t,r,i,o):n(t)),void 0!==s)return s;if(!Hs(t))return t;var O=Is(t);if(O){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&xt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return yi(t,s)}else{var E=ro(t),I=E==f||E==p;if(Ys(t))return fi(t,u);if(E==v||E==a||I&&!i){if(s=h||I?{}:oo(t),!u)return h?function(t,e){return _i(t,no(t),e)}(t,function(t,e){return t&&_i(e,ka(e),t)}(s,t)):function(t,e){return _i(t,eo(t),e)}(t,qn(s,t))}else{if(!Nt[E])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case k:return pi(t);case l:case c:return new r(+t);case x:return function(t,e){var n=e?pi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case P:case C:case T:case S:case L:case A:case"[object Uint8ClampedArray]":case B:case M:return gi(t,n);case g:return new r;case d:case _:return new r(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new r;case b:return i=t,Sn?gt(Sn.call(i)):{}}var i}(t,E,u)}}o||(o=new Yn);var D=o.get(t);if(D)return D;o.set(t,s),Qs(t)?t.forEach((function(r){s.add(Jn(r,e,n,r,t,o))})):Ws(t)&&t.forEach((function(r,i){s.set(i,Jn(r,e,n,i,t,o))}));var $=O?void 0:(w?h?qi:Wi:h?ka:wa)(t);return se($||t,(function(r,i){$&&(r=t[i=r]),Hn(s,i,Jn(r,e,n,i,t,o))})),s}function Zn(t,e,n){var r=n.length;if(null==t)return!r;for(t=gt(t);r--;){var i=n[r],o=e[i],s=t[i];if(void 0===s&&!(i in t)||!o(s))return!1}return!0}function Vn(t,e,n){if("function"!=typeof t)throw new mt(i);return wo((function(){t.apply(void 0,n)}),e)}function tr(t,e,n,r){var i=-1,o=ce,s=!0,a=t.length,u=[],l=e.length;if(!a)return u;n&&(e=fe(e,Be(n))),r?(o=he,s=!1):e.length>=200&&(o=Oe,s=!1,e=new jn(e));t:for(;++i-1},Dn.prototype.set=function(t,e){var n=this.__data__,r=Fn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},$n.prototype.clear=function(){this.size=0,this.__data__={hash:new In,map:new(gn||Dn),string:new In}},$n.prototype.delete=function(t){var e=Zi(this,t).delete(t);return this.size-=e?1:0,e},$n.prototype.get=function(t){return Zi(this,t).get(t)},$n.prototype.has=function(t){return Zi(this,t).has(t)},$n.prototype.set=function(t,e){var n=Zi(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},jn.prototype.add=jn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},jn.prototype.has=function(t){return this.__data__.has(t)},Yn.prototype.clear=function(){this.__data__=new Dn,this.size=0},Yn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Yn.prototype.get=function(t){return this.__data__.get(t)},Yn.prototype.has=function(t){return this.__data__.has(t)},Yn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Dn){var r=n.__data__;if(!gn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new $n(r)}return n.set(t,e),this.size=n.size,this};var er=ki(lr),nr=ki(cr,!0);function rr(t,e){var n=!0;return er(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function ir(t,e,n){for(var r=-1,i=t.length;++r0&&n(a)?e>1?sr(a,e-1,n,r,i):pe(i,a):r||(i[i.length]=a)}return i}var ar=xi(),ur=xi(!0);function lr(t,e){return t&&ar(t,e,wa)}function cr(t,e){return t&&ur(t,e,wa)}function hr(t,e){return le(e,(function(e){return Rs(t[e])}))}function fr(t,e){for(var n=0,r=(e=ui(e,t)).length;null!=t&&ne}function vr(t,e){return null!=t&&xt.call(t,e)}function mr(t,e){return null!=t&&e in gt(t)}function yr(t,e,n){for(var i=n?he:ce,o=t[0].length,s=t.length,a=s,u=r(s),l=1/0,c=[];a--;){var h=t[a];a&&e&&(h=fe(h,Be(e))),l=un(h.length,l),u[a]=!n&&(e||o>=120&&h.length>=120)?new jn(a&&h):void 0}h=t[0];var f=-1,p=u[0];t:for(;++f=a)return u;var l=n[r];return u*("desc"==l?-1:1)}}return t.index-e.index}(t,e,n)}))}function Ir(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Gt.call(a,u,1),Gt.call(t,u,1);return t}function $r(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;ao(i)?Gt.call(t,i,1):ti(t,i)}}return t}function jr(t,e){return t+tn(hn()*(e-t+1))}function Yr(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=tn(e/2))&&(t+=t)}while(e);return n}function Xr(t,e){return ko(vo(t,e,qa),t+"")}function Nr(t){return Nn(Ba(t))}function Rr(t,e){var n=Ba(t);return Co(n,Qn(e,0,n.length))}function zr(t,e,n,r){if(!Hs(t))return t;for(var i=-1,o=(e=ui(e,t)).length,s=o-1,a=t;null!=a&&++io?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var s=r(o);++i>>1,s=t[o];null!==s&&!Zs(s)&&(n?s<=e:s=200){var l=e?null:Yi(t);if(l)return Ue(l);s=!1,i=Oe,u=new jn}else u=e?[]:a;t:for(;++r=r?t:Wr(t,e,n)}var hi=Qe||function(t){return Wt.clearTimeout(t)};function fi(t,e){if(e)return t.slice();var n=t.length,r=Rt?Rt(n):new t.constructor(n);return t.copy(r),r}function pi(t){var e=new t.constructor(t.byteLength);return new Dt(e).set(new Dt(t)),e}function gi(t,e){var n=e?pi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function di(t,e){if(t!==e){var n=void 0!==t,r=null===t,i=t==t,o=Zs(t),s=void 0!==e,a=null===e,u=e==e,l=Zs(e);if(!a&&!l&&!o&&t>e||o&&s&&u&&!a&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!o&&!l&&t1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(i--,o):void 0,s&&uo(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),e=gt(e);++r-1?i[o?e[s]:s]:void 0}}function Li(t){return Fi((function(e){var n=e.length,r=n,o=On.prototype.thru;for(t&&e.reverse();r--;){var s=e[r];if("function"!=typeof s)throw new mt(i);if(o&&!a&&"wrapper"==Ki(s))var a=new On([],!0)}for(r=a?r:n;++r1&&_.reverse(),h&&la))return!1;var l=o.get(t),c=o.get(e);if(l&&c)return l==e&&c==t;var h=-1,f=!0,p=2&n?new jn:void 0;for(o.set(t,e),o.set(e,t);++h-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(K,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return se(s,(function(n){var r="_."+n[0];e&n[1]&&!ce(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Q);return e?e[1].split(J):[]}(r),n)))}function Po(t){var e=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function Co(t,e){var n=-1,r=t.length,i=r-1;for(e=void 0===e?r:e;++n1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Ko(t,n)}));function ns(t){var e=An(t);return e.__chain__=!0,e}function rs(t,e){return e(t)}var is=Fi((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Kn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof En&&ao(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:rs,args:[i],thisArg:void 0}),new On(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(i)}));var os=bi((function(t,e,n){xt.call(t,n)?++t[n]:Gn(t,n,1)}));var ss=Si(Eo),as=Si(Io);function us(t,e){return(Is(t)?se:er)(t,Ji(e,3))}function ls(t,e){return(Is(t)?ae:nr)(t,Ji(e,3))}var cs=bi((function(t,e,n){xt.call(t,n)?t[n].push(e):Gn(t,n,[e])}));var hs=Xr((function(t,e,n){var i=-1,o="function"==typeof e,s=$s(t)?r(t.length):[];return er(t,(function(t){s[++i]=o?ie(e,t,n):_r(t,e,n)})),s})),fs=bi((function(t,e,n){Gn(t,n,e)}));function ps(t,e){return(Is(t)?fe:Lr)(t,Ji(e,3))}var gs=bi((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var ds=Xr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&uo(t,e[0],e[1])?e=[]:n>2&&uo(e[0],e[1],e[2])&&(e=[e[0]]),Er(t,sr(e,1),[])})),vs=Je||function(){return Wt.Date.now()};function ms(t,e,n){return e=n?void 0:e,Ni(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function ys(t,e){var n;if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var _s=Xr((function(t,e,n){var r=1;if(n.length){var i=ze(n,Qi(_s));r|=32}return Ni(t,r,e,n,i)})),bs=Xr((function(t,e,n){var r=3;if(n.length){var i=ze(n,Qi(bs));r|=32}return Ni(e,r,t,n,i)}));function ws(t,e,n){var r,o,s,a,u,l,c=0,h=!1,f=!1,p=!0;if("function"!=typeof t)throw new mt(i);function g(e){var n=r,i=o;return r=o=void 0,c=e,a=t.apply(i,n)}function d(t){return c=t,u=wo(m,e),h?g(t):a}function v(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-c>=s}function m(){var t=vs();if(v(t))return y(t);u=wo(m,function(t){var n=e-(t-l);return f?un(n,s-(t-c)):n}(t))}function y(t){return u=void 0,p&&r?g(t):(r=o=void 0,a)}function _(){var t=vs(),n=v(t);if(r=arguments,o=this,l=t,n){if(void 0===u)return d(l);if(f)return hi(u),u=wo(m,e),g(l)}return void 0===u&&(u=wo(m,e)),a}return e=sa(e)||0,Hs(n)&&(h=!!n.leading,s=(f="maxWait"in n)?an(sa(n.maxWait)||0,e):s,p="trailing"in n?!!n.trailing:p),_.cancel=function(){void 0!==u&&hi(u),c=0,r=l=o=u=void 0},_.flush=function(){return void 0===u?a:y(vs())},_}var ks=Xr((function(t,e){return Vn(t,1,e)})),xs=Xr((function(t,e,n){return Vn(t,sa(e)||0,n)}));function Ps(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new mt(i);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ps.Cache||$n),n}function Cs(t){if("function"!=typeof t)throw new mt(i);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ps.Cache=$n;var Ts=li((function(t,e){var n=(e=1==e.length&&Is(e[0])?fe(e[0],Be(Ji())):fe(sr(e,1),Be(Ji()))).length;return Xr((function(r){for(var i=-1,o=un(r.length,n);++i=e})),Es=br(function(){return arguments}())?br:function(t){return Fs(t)&&xt.call(t,"callee")&&!qt.call(t,"callee")},Is=r.isArray,Ds=Zt?Be(Zt):function(t){return Fs(t)&&gr(t)==k};function $s(t){return null!=t&&Us(t.length)&&!Rs(t)}function js(t){return Fs(t)&&$s(t)}var Ys=nn||su,Xs=Vt?Be(Vt):function(t){return Fs(t)&&gr(t)==c};function Ns(t){if(!Fs(t))return!1;var e=gr(t);return e==h||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Gs(t)}function Rs(t){if(!Hs(t))return!1;var e=gr(t);return e==f||e==p||"[object AsyncFunction]"==e||"[object Proxy]"==e}function zs(t){return"number"==typeof t&&t==ia(t)}function Us(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Hs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Fs(t){return null!=t&&"object"==typeof t}var Ws=te?Be(te):function(t){return Fs(t)&&ro(t)==g};function qs(t){return"number"==typeof t||Fs(t)&&gr(t)==d}function Gs(t){if(!Fs(t)||gr(t)!=v)return!1;var e=Ht(t);if(null===e)return!0;var n=xt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&kt.call(n)==St}var Ks=ee?Be(ee):function(t){return Fs(t)&&gr(t)==m};var Qs=ne?Be(ne):function(t){return Fs(t)&&ro(t)==y};function Js(t){return"string"==typeof t||!Is(t)&&Fs(t)&&gr(t)==_}function Zs(t){return"symbol"==typeof t||Fs(t)&&gr(t)==b}var Vs=re?Be(re):function(t){return Fs(t)&&Us(t.length)&&!!Xt[gr(t)]};var ta=Di(Sr),ea=Di((function(t,e){return t<=e}));function na(t){if(!t)return[];if($s(t))return Js(t)?We(t):yi(t);if(Jt&&t[Jt])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Jt]());var e=ro(t);return(e==g?Ne:e==y?Ue:Ba)(t)}function ra(t){return t?(t=sa(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ia(t){var e=ra(t),n=e%1;return e==e?n?e-n:e:0}function oa(t){return t?Qn(ia(t),0,4294967295):0}function sa(t){if("number"==typeof t)return t;if(Zs(t))return NaN;if(Hs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Hs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ae(t);var n=it.test(t);return n||st.test(t)?Ut(t.slice(2),n?2:8):rt.test(t)?NaN:+t}function aa(t){return _i(t,ka(t))}function ua(t){return null==t?"":Zr(t)}var la=wi((function(t,e){if(fo(e)||$s(e))_i(e,wa(e),t);else for(var n in e)xt.call(e,n)&&Hn(t,n,e[n])})),ca=wi((function(t,e){_i(e,ka(e),t)})),ha=wi((function(t,e,n,r){_i(e,ka(e),t,r)})),fa=wi((function(t,e,n,r){_i(e,wa(e),t,r)})),pa=Fi(Kn);var ga=Xr((function(t,e){t=gt(t);var n=-1,r=e.length,i=r>2?e[2]:void 0;for(i&&uo(e[0],e[1],i)&&(r=1);++n1),e})),_i(t,qi(t),n),r&&(n=Jn(n,7,Ui));for(var i=e.length;i--;)ti(n,e[i]);return n}));var Ta=Fi((function(t,e){return null==t?{}:function(t,e){return Ir(t,e,(function(e,n){return ma(t,n)}))}(t,e)}));function Sa(t,e){if(null==t)return{};var n=fe(qi(t),(function(t){return[t]}));return e=Ji(e),Ir(t,n,(function(t,n){return e(t,n[0])}))}var La=Xi(wa),Aa=Xi(ka);function Ba(t){return null==t?[]:Me(t,wa(t))}var Ma=Ci((function(t,e,n){return e=e.toLowerCase(),t+(n?Oa(e):e)}));function Oa(t){return Na(ua(t).toLowerCase())}function Ea(t){return(t=ua(t))&&t.replace(ut,$e).replace(Ot,"")}var Ia=Ci((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Da=Ci((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),$a=Pi("toLowerCase");var ja=Ci((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Ya=Ci((function(t,e,n){return t+(n?" ":"")+Na(e)}));var Xa=Ci((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Na=Pi("toUpperCase");function Ra(t,e,n){return t=ua(t),void 0===(e=n?void 0:e)?function(t){return $t.test(t)}(t)?function(t){return t.match(It)||[]}(t):function(t){return t.match(Z)||[]}(t):t.match(e)||[]}var za=Xr((function(t,e){try{return ie(t,void 0,e)}catch(t){return Ns(t)?t:new ht(t)}})),Ua=Fi((function(t,e){return se(e,(function(e){e=So(e),Gn(t,e,_s(t[e],t))})),t}));function Ha(t){return function(){return t}}var Fa=Li(),Wa=Li(!0);function qa(t){return t}function Ga(t){return Pr("function"==typeof t?t:Jn(t,1))}var Ka=Xr((function(t,e){return function(n){return _r(n,t,e)}})),Qa=Xr((function(t,e){return function(n){return _r(t,n,e)}}));function Ja(t,e,n){var r=wa(e),i=hr(e,r);null!=n||Hs(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=hr(e,wa(e)));var o=!(Hs(n)&&"chain"in n&&!n.chain),s=Rs(t);return se(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=yi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,pe([this.value()],arguments))})})),t}function Za(){}var Va=Oi(fe),tu=Oi(ue),eu=Oi(ve);function nu(t){return lo(t)?Pe(So(t)):function(t){return function(e){return fr(e,t)}}(t)}var ru=Ii(),iu=Ii(!0);function ou(){return[]}function su(){return!1}var au=Mi((function(t,e){return t+e}),0),uu=ji("ceil"),lu=Mi((function(t,e){return t/e}),1),cu=ji("floor");var hu,fu=Mi((function(t,e){return t*e}),1),pu=ji("round"),gu=Mi((function(t,e){return t-e}),0);return An.after=function(t,e){if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){if(--t<1)return e.apply(this,arguments)}},An.ary=ms,An.assign=la,An.assignIn=ca,An.assignInWith=ha,An.assignWith=fa,An.at=pa,An.before=ys,An.bind=_s,An.bindAll=Ua,An.bindKey=bs,An.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Is(t)?t:[t]},An.chain=ns,An.chunk=function(t,e,n){e=(n?uo(t,e,n):void 0===e)?1:an(ia(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=r(Ve(i/e));oi?0:i+n),(r=void 0===r||r>i?i:ia(r))<0&&(r+=i),r=n>r?0:oa(r);n>>0)?(t=ua(t))&&("string"==typeof e||null!=e&&!Ks(e))&&!(e=Zr(e))&&Xe(t)?ci(We(t),0,n):t.split(e,n):[]},An.spread=function(t,e){if("function"!=typeof t)throw new mt(i);return e=null==e?0:an(ia(e),0),Xr((function(n){var r=n[e],i=ci(n,0,e);return r&&pe(i,r),ie(t,this,i)}))},An.tail=function(t){var e=null==t?0:t.length;return e?Wr(t,1,e):[]},An.take=function(t,e,n){return t&&t.length?Wr(t,0,(e=n||void 0===e?1:ia(e))<0?0:e):[]},An.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Wr(t,(e=r-(e=n||void 0===e?1:ia(e)))<0?0:e,r):[]},An.takeRightWhile=function(t,e){return t&&t.length?ni(t,Ji(e,3),!1,!0):[]},An.takeWhile=function(t,e){return t&&t.length?ni(t,Ji(e,3)):[]},An.tap=function(t,e){return e(t),t},An.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new mt(i);return Hs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ws(t,e,{leading:r,maxWait:e,trailing:o})},An.thru=rs,An.toArray=na,An.toPairs=La,An.toPairsIn=Aa,An.toPath=function(t){return Is(t)?fe(t,So):Zs(t)?[t]:yi(To(ua(t)))},An.toPlainObject=aa,An.transform=function(t,e,n){var r=Is(t),i=r||Ys(t)||Vs(t);if(e=Ji(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Hs(t)&&Rs(o)?Bn(Ht(t)):{}}return(i?se:lr)(t,(function(t,r,i){return e(n,t,r,i)})),n},An.unary=function(t){return ms(t,1)},An.union=Fo,An.unionBy=Wo,An.unionWith=qo,An.uniq=function(t){return t&&t.length?Vr(t):[]},An.uniqBy=function(t,e){return t&&t.length?Vr(t,Ji(e,2)):[]},An.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Vr(t,void 0,e):[]},An.unset=function(t,e){return null==t||ti(t,e)},An.unzip=Go,An.unzipWith=Ko,An.update=function(t,e,n){return null==t?t:ei(t,e,ai(n))},An.updateWith=function(t,e,n,r){return r="function"==typeof r?r:void 0,null==t?t:ei(t,e,ai(n),r)},An.values=Ba,An.valuesIn=function(t){return null==t?[]:Me(t,ka(t))},An.without=Qo,An.words=Ra,An.wrap=function(t,e){return Ss(ai(e),t)},An.xor=Jo,An.xorBy=Zo,An.xorWith=Vo,An.zip=ts,An.zipObject=function(t,e){return oi(t||[],e||[],Hn)},An.zipObjectDeep=function(t,e){return oi(t||[],e||[],zr)},An.zipWith=es,An.entries=La,An.entriesIn=Aa,An.extend=ca,An.extendWith=ha,Ja(An,An),An.add=au,An.attempt=za,An.camelCase=Ma,An.capitalize=Oa,An.ceil=uu,An.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=sa(n))==n?n:0),void 0!==e&&(e=(e=sa(e))==e?e:0),Qn(sa(t),e,n)},An.clone=function(t){return Jn(t,4)},An.cloneDeep=function(t){return Jn(t,5)},An.cloneDeepWith=function(t,e){return Jn(t,5,e="function"==typeof e?e:void 0)},An.cloneWith=function(t,e){return Jn(t,4,e="function"==typeof e?e:void 0)},An.conformsTo=function(t,e){return null==e||Zn(t,e,wa(e))},An.deburr=Ea,An.defaultTo=function(t,e){return null==t||t!=t?e:t},An.divide=lu,An.endsWith=function(t,e,n){t=ua(t),e=Zr(e);var r=t.length,i=n=void 0===n?r:Qn(ia(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},An.eq=Bs,An.escape=function(t){return(t=ua(t))&&Y.test(t)?t.replace($,je):t},An.escapeRegExp=function(t){return(t=ua(t))&&W.test(t)?t.replace(F,"\\$&"):t},An.every=function(t,e,n){var r=Is(t)?ue:rr;return n&&uo(t,e,n)&&(e=void 0),r(t,Ji(e,3))},An.find=ss,An.findIndex=Eo,An.findKey=function(t,e){return ye(t,Ji(e,3),lr)},An.findLast=as,An.findLastIndex=Io,An.findLastKey=function(t,e){return ye(t,Ji(e,3),cr)},An.floor=cu,An.forEach=us,An.forEachRight=ls,An.forIn=function(t,e){return null==t?t:ar(t,Ji(e,3),ka)},An.forInRight=function(t,e){return null==t?t:ur(t,Ji(e,3),ka)},An.forOwn=function(t,e){return t&&lr(t,Ji(e,3))},An.forOwnRight=function(t,e){return t&&cr(t,Ji(e,3))},An.get=va,An.gt=Ms,An.gte=Os,An.has=function(t,e){return null!=t&&io(t,e,vr)},An.hasIn=ma,An.head=$o,An.identity=qa,An.includes=function(t,e,n,r){t=$s(t)?t:Ba(t),n=n&&!r?ia(n):0;var i=t.length;return n<0&&(n=an(i+n,0)),Js(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&be(t,e,n)>-1},An.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ia(n);return i<0&&(i=an(r+i,0)),be(t,e,i)},An.inRange=function(t,e,n){return e=ra(e),void 0===n?(n=e,e=0):n=ra(n),function(t,e,n){return t>=un(e,n)&&t=-9007199254740991&&t<=9007199254740991},An.isSet=Qs,An.isString=Js,An.isSymbol=Zs,An.isTypedArray=Vs,An.isUndefined=function(t){return void 0===t},An.isWeakMap=function(t){return Fs(t)&&ro(t)==w},An.isWeakSet=function(t){return Fs(t)&&"[object WeakSet]"==gr(t)},An.join=function(t,e){return null==t?"":on.call(t,e)},An.kebabCase=Ia,An.last=No,An.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ia(n))<0?an(r+i,0):un(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):_e(t,ke,i,!0)},An.lowerCase=Da,An.lowerFirst=$a,An.lt=ta,An.lte=ea,An.max=function(t){return t&&t.length?ir(t,qa,dr):void 0},An.maxBy=function(t,e){return t&&t.length?ir(t,Ji(e,2),dr):void 0},An.mean=function(t){return xe(t,qa)},An.meanBy=function(t,e){return xe(t,Ji(e,2))},An.min=function(t){return t&&t.length?ir(t,qa,Sr):void 0},An.minBy=function(t,e){return t&&t.length?ir(t,Ji(e,2),Sr):void 0},An.stubArray=ou,An.stubFalse=su,An.stubObject=function(){return{}},An.stubString=function(){return""},An.stubTrue=function(){return!0},An.multiply=fu,An.nth=function(t,e){return t&&t.length?Or(t,ia(e)):void 0},An.noConflict=function(){return Wt._===this&&(Wt._=Lt),this},An.noop=Za,An.now=vs,An.pad=function(t,e,n){t=ua(t);var r=(e=ia(e))?Fe(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Ei(tn(i),n)+t+Ei(Ve(i),n)},An.padEnd=function(t,e,n){t=ua(t);var r=(e=ia(e))?Fe(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=hn();return un(t+i*(e-t+zt("1e-"+((i+"").length-1))),e)}return jr(t,e)},An.reduce=function(t,e,n){var r=Is(t)?ge:Te,i=arguments.length<3;return r(t,Ji(e,4),n,i,er)},An.reduceRight=function(t,e,n){var r=Is(t)?de:Te,i=arguments.length<3;return r(t,Ji(e,4),n,i,nr)},An.repeat=function(t,e,n){return e=(n?uo(t,e,n):void 0===e)?1:ia(e),Yr(ua(t),e)},An.replace=function(){var t=arguments,e=ua(t[0]);return t.length<3?e:e.replace(t[1],t[2])},An.result=function(t,e,n){var r=-1,i=(e=ui(e,t)).length;for(i||(i=1,t=void 0);++r9007199254740991)return[];var n=4294967295,r=un(t,4294967295);t-=4294967295;for(var i=Le(r,e=Ji(e));++n=o)return t;var a=n-Fe(r);if(a<1)return r;var u=s?ci(s,0,a).join(""):t.slice(0,a);if(void 0===i)return u+r;if(s&&(a+=u.length-a),Ks(i)){if(t.slice(a).search(i)){var l,c=u;for(i.global||(i=dt(i.source,ua(nt.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var h=l.index;u=u.slice(0,void 0===h?a:h)}}else if(t.indexOf(Zr(i),a)!=a){var f=u.lastIndexOf(i);f>-1&&(u=u.slice(0,f))}return u+r},An.unescape=function(t){return(t=ua(t))&&j.test(t)?t.replace(D,Ge):t},An.uniqueId=function(t){var e=++Pt;return ua(t)+e},An.upperCase=Xa,An.upperFirst=Na,An.each=us,An.eachRight=ls,An.first=$o,Ja(An,(hu={},lr(An,(function(t,e){xt.call(An.prototype,e)||(hu[e]=t)})),hu),{chain:!1}),An.VERSION="4.17.21",se(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){An[t].placeholder=An})),se(["drop","take"],(function(t,e){En.prototype[t]=function(n){n=void 0===n?1:an(ia(n),0);var r=this.__filtered__&&!e?new En(this):this.clone();return r.__filtered__?r.__takeCount__=un(n,r.__takeCount__):r.__views__.push({size:un(n,4294967295),type:t+(r.__dir__<0?"Right":"")}),r},En.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),se(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;En.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Ji(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),se(["head","last"],(function(t,e){var n="take"+(e?"Right":"");En.prototype[t]=function(){return this[n](1).value()[0]}})),se(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");En.prototype[t]=function(){return this.__filtered__?new En(this):this[n](1)}})),En.prototype.compact=function(){return this.filter(qa)},En.prototype.find=function(t){return this.filter(t).head()},En.prototype.findLast=function(t){return this.reverse().find(t)},En.prototype.invokeMap=Xr((function(t,e){return"function"==typeof t?new En(this):this.map((function(n){return _r(n,t,e)}))})),En.prototype.reject=function(t){return this.filter(Cs(Ji(t)))},En.prototype.slice=function(t,e){t=ia(t);var n=this;return n.__filtered__&&(t>0||e<0)?new En(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=ia(e))<0?n.dropRight(-e):n.take(e-t)),n)},En.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},En.prototype.toArray=function(){return this.take(4294967295)},lr(En.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=An[r?"take"+("last"==e?"Right":""):e],o=r||/^find/.test(e);i&&(An.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,a=e instanceof En,u=s[0],l=a||Is(e),c=function(t){var e=i.apply(An,pe([t],s));return r&&h?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(a=l=!1);var h=this.__chain__,f=!!this.__actions__.length,p=o&&!h,g=a&&!f;if(!o&&l){e=g?e:new En(this);var d=t.apply(e,s);return d.__actions__.push({func:rs,args:[c],thisArg:void 0}),new On(d,h)}return p&&g?t.apply(this,s):(d=this.thru(c),p?r?d.value()[0]:d.value():d)})})),se(["pop","push","shift","sort","splice","unshift"],(function(t){var e=yt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);An.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Is(i)?i:[],t)}return this[n]((function(n){return e.apply(Is(n)?n:[],t)}))}})),lr(En.prototype,(function(t,e){var n=An[e];if(n){var r=n.name+"";xt.call(bn,r)||(bn[r]=[]),bn[r].push({name:e,func:n})}})),bn[Ai(void 0,2).name]=[{name:"wrapper",func:void 0}],En.prototype.clone=function(){var t=new En(this.__wrapped__);return t.__actions__=yi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=yi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=yi(this.__views__),t},En.prototype.reverse=function(){if(this.__filtered__){var t=new En(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},En.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Is(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},An.prototype.plant=function(t){for(var e,n=this;n instanceof Mn;){var r=Ao(n);r.__index__=0,r.__values__=void 0,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},An.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof En){var e=t;return this.__actions__.length&&(e=new En(this)),(e=e.reverse()).__actions__.push({func:rs,args:[Ho],thisArg:void 0}),new On(e,this.__chain__)}return this.thru(Ho)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return ri(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,Jt&&(An.prototype[Jt]=function(){return this}),An}();Wt._=Ke,void 0===(r=function(){return Ke}.call(e,n,e,t))||(t.exports=r)}).call(this)}).call(this,n(67)(t))},297:function(t,e,n){},298:function(t,e,n){},299:function(t,e,n){},300:function(t,e,n){},301:function(t,e,n){},302:function(t,e,n){},303:function(t,e){t.exports=function(t){return null==t}},304:function(t,e,n){},305:function(t,e,n){},306:function(t,e,n){},307:function(t,e,n){},308:function(t,e,n){},309:function(t,e,n){},310:function(t,e,n){},311:function(t,e,n){},312:function(t,e,n){},313:function(t,e,n){},314:function(t,e,n){},315:function(t,e,n){},316:function(t,e,n){},317:function(t,e,n){},318:function(t,e,n){},319:function(t,e,n){},322:function(t,e,n){"use strict";n.r(e);n(4),n(64);var r=n(20),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(323).a},beforeCreate(){this.$options.components.SidebarLinks=n(322).default},methods:{isActive:r.f}},o=(n(359),n(14)),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return e("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?e("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):e("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),e("DropdownTransition",[t.open||!t.collapsable?e("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(295),n(21);function a(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,o,s=1){return!e||s>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const l=Object(r.f)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header level"+e.level},[a(t,n+"#"+e.slug,e.title,l),u(t,e.children,n,i,o,s+1)])}))}var l={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:i,$themeConfig:o,$themeLocaleConfig:s},props:{item:l,sidebarDepth:c}}){const h=Object(r.f)(i,l.path),f="auto"===l.type?h||l.children.some(t=>Object(r.f)(i,l.basePath+"#"+t.slug)):h,p="external"===l.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,l.path,l.title||l.path):a(t,l.path,l.title||l.path,f),g=[e.frontmatter.sidebarDepth,c,s.sidebarDepth,o.sidebarDepth,1].find(t=>void 0!==t),d=s.displayAllHeaders||o.displayAllHeaders;if("auto"===l.type)return[p,u(t,l.children,l.basePath,i,g)];if((f||d)&&l.headers&&!r.e.test(l.path)){return[p,u(t,Object(r.d)(l.headers),l.path,i,g)]}return p}};n(360);function c(t,e){return"group"===e.type&&e.children.some(e=>"group"===e.type?c(t,e):"page"===e.type&&Object(r.f)(t,e.path))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(o.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data(){return{openGroupIndex:this.initialOpenGroupIndex||0}},created(){this.refreshIndex()},watch:{$route(){this.refreshIndex()}},methods:{refreshIndex(){const t=function(t,e){for(let n=0;n-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(r.f)(this.$route,t.regularPath)}}},f=Object(o.a)(h,(function(){var t=this,e=t._self._c;return t.items.length?e("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(n,r){return e("li",{key:r},["group"===n.type?e("SidebarGroup",{attrs:{item:n,open:r===t.openGroupIndex,collapsable:n.collapsable||n.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):e("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:n}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=f.exports},323:function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},i=(n(345),n(14)),o=Object(i.a)(r,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=o.exports},325:function(t,e,n){"use strict";n(286)},326:function(t,e,n){"use strict";n(287)},327:function(t,e,n){"use strict";n(288)},328:function(t,e,n){"use strict";n(289)},329:function(t,e,n){"use strict";n(290)},330:function(t,e,n){"use strict";n(291)},331:function(t,e,n){"use strict";n(292)},332:function(t,e,n){"use strict";n(293)},333:function(t,e,n){"use strict";var r=n(44),i=n(5),o=n(122),s=n(294),a=URLSearchParams,u=a.prototype,l=i(u.append),c=i(u.delete),h=i(u.forEach),f=i([].push),p=new a("a=1&a=2&b=3");p.delete("a",1),p.delete("b",void 0),p+""!="a=2"&&r(u,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return c(this,t);var r=[];h(this,(function(t,e){f(r,{key:e,value:t})})),s(e,1);for(var i,a=o(t),u=o(n),p=0,g=0,d=!1,v=r.length;p1?arguments[1]:void 0)}}),o("findLastIndex")},337:function(t,e,n){"use strict";var r=n(124),i=n(65),o=n(30),s=n(31),a=function(t){var e=1===t;return function(n,a,u){for(var l,c=o(n),h=i(c),f=s(h),p=r(a,u);f-- >0;)if(p(l=h[f],f,c))switch(t){case 0:return l;case 1:return f}return e?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}},338:function(t,e,n){"use strict";var r=n(16),i=n(66),o=n(17).f,s=r("unscopables"),a=Array.prototype;void 0===a[s]&&o(a,s,{configurable:!0,value:i(null)}),t.exports=function(t){a[s][t]=!0}},339:function(t,e,n){"use strict";n(340)},340:function(t,e,n){"use strict";var r=n(10),i=n(45),o=n(7),s=n(1),a=n(25);r({target:"Iterator",proto:!0,real:!0},{every:function(t){s(this),o(t);var e=a(this),n=0;return!i(e,(function(e,r){if(!t(e,n++))return r()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},341:function(t,e,n){"use strict";var r=n(10),i=n(45),o=n(7),s=n(1),a=n(25);r({target:"Iterator",proto:!0,real:!0},{find:function(t){s(this),o(t);var e=a(this),n=0;return i(e,(function(e,r){if(t(e,n++))return r(e)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})},342:function(t,e,n){"use strict";!function(e,n,r){let i;(i=r.define)&&i.amd?i([],(function(){return n})):(i=r.modules)?i["FlexSearch".toLowerCase()]=n:t.exports=n}(0,function t(e){function n(t,e){const n=e?e.id:t&&t.id;this.id=n||0===n?n:A++,this.init(t,e),s(this,"index",(function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)})),s(this,"length",(function(){return this.index.length}))}function r(t,e,n,r){return this.u!==this.g&&(this.o=this.o.concat(n),this.u++,r&&this.o.length>=r&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(e,this.o),this.F&&this.F(this.o))),this}function i(t,e){const n=t.length,r=_(e),i=[];for(let o=0,s=0;o=s&&((t=(t=t[a-(i+.5>>0)])[n]||(t[n]=[]))[t.length]=r),i)}function c(t,e){if(t){const n=Object.keys(t);for(let r=0,i=n.length;r(t=t.length-e.length)?1:t?-1:0}function p(t,e){return(t=t[O])<(e=e[O])?-1:t>e?1:0}function g(t,e){const n=O.length;for(let r=0;re?1:0}function d(t,e,n){return t?{page:t,next:e?""+e:null,result:n}:n}function v(t,e,n,r,i,o,s){let a,u=[];if(!0===n){n="0";var l=""}else l=n&&n.split(":");const c=t.length;if(1s&&(l=0),a=(l=l||0)+e,a=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:t,content:e}),this.c[s]=""+this.C,n&&n(),this;if(!o){if(this.async&&"function"!=typeof importScripts){let i=this;return s=new Promise((function(n){setTimeout((function(){i.add(t,e,null,r,!0),i=null,n()}))})),n?(s.then(n),this):s}if(n)return this.add(t,e,null,r,!0),n(),this}if(!(e=this.encode(e)).length)return this;o=_(n=this.f)?n(e):e.split(this.split),this.filter&&(o=i(o,this.filter));const p=x();p._ctx=x();const g=o.length,d=this.threshold,v=this.depth,m=this.b,y=this.i,b=this.D;for(let e=0;ef;n--)l(y,p,h=a.substring(f,n),t,e,c,d,m-1)}break;default:if(u=l(y,p,a,t,1,c,d,m-1),v&&1=d)for(u=p._ctx[a]||(p._ctx[a]=x()),a=this.h[a]||(this.h[a]=k(m-(d||0))),0>(c=e-v)&&(c=0),(h=e+v+1)>g&&(h=g);ci;n--)r=o[n-1],o[n]=r,e[r]=n;o[i]=t,e[t]=i}}}return e},t}();return n}(function(){const t={},e="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;return function(n,r,i,o,s){return i=e?URL.createObjectURL(new Blob(["("+i.toString()+")()"],{type:"text/javascript"})):n+".min.js",t[n+="-"+r]||(t[n]=[]),t[n][s]=new Worker(i),t[n][s].onmessage=o,t[n][s]}}()),this)},343:function(t,e,n){"use strict";n(297)},344:function(t,e,n){"use strict";n(298)},345:function(t,e,n){"use strict";n(299)},346:function(t,e,n){"use strict";n(300)},347:function(t,e,n){"use strict";n(301)},348:function(t,e,n){"use strict";n(302)},349:function(t,e,n){"use strict";n(304)},350:function(t,e,n){var r=n(26),i=n(11),o=n(22);t.exports=function(t){return"string"==typeof t||!i(t)&&o(t)&&"[object String]"==r(t)}},351:function(t,e,n){"use strict";n(305)},352:function(t,e,n){"use strict";n(306)},353:function(t,e,n){"use strict";n(307)},354:function(t,e,n){"use strict";n(308)},355:function(t,e,n){"use strict";n(309)},356:function(t,e,n){"use strict";n(310)},357:function(t,e,n){"use strict";n(311)},358:function(t,e,n){"use strict";n(312)},359:function(t,e,n){"use strict";n(313)},360:function(t,e,n){"use strict";n(314)},361:function(t,e,n){"use strict";n(315)},362:function(t,e,n){"use strict";n(316)},363:function(t,e,n){"use strict";n(317)},364:function(t,e,n){"use strict";n(318)},365:function(t,e,n){"use strict";n(319)},370:function(t,e,n){"use strict";n.r(e);n(4),n(64);var r=n(20),i={props:{item:{required:!0}},computed:{link(){return Object(r.c)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:r.g,isMailto:r.h,isTel:r.i,focusoutAction(){this.$emit("focusout")}}},o=n(14),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v(t._s(t.item.text))])}),[],!1,null,null,null).exports,a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};function u(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var l=function(){return(l=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0,m=function(){if("string"==typeof g){var t=/os (\d\d?_\d(_\d)?)/.exec(g);if(!t)return!1;var e=t[1].split("_").map((function(t){return parseInt(t,10)}));return!!(13===e[0]&&e[1]>=4)}return!1}(),y=!1;if(p){try{var _={};Object.defineProperty(_,"passive",{get:function(){y=!0}}),window.addEventListener("test-passive",(function(){}),_)}catch(t){}}function b(){return window.performance&&window.performance.now&&window.performance.timing?window.performance.now()+window.performance.timing.navigationStart:+new Date}var w=function(t,e){for(var n in e)t[n]=e[n];return t};function k(t){return null==t}function x(t,e,n){return tn?n:t}var P=p&&document.createElement("div").style,C=function(){if(!p)return!1;for(var t=0,e=[{key:"standard",value:"transform"},{key:"webkit",value:"webkitTransform"},{key:"Moz",value:"MozTransform"},{key:"O",value:"OTransform"},{key:"ms",value:"msTransform"}];tdocument.documentElement.clientWidth-u||a>document.documentElement.clientHeight-u||s0?-1:n<0?1:0},o=i(e.x,t.x),s=i(e.y,t.y),a=n.x-r.x,u=n.y-r.y;return o*a<=0&&s*u<=0})(t,e,o,r)&&n.hooks.trigger(n.hooks.eventTypes.move,o),n.pending||(n.callStopWhenPending?n.callStopWhenPending=!1:n.hooks.trigger(n.hooks.eventTypes.end,o)),r=o,n.pending&&(n.timer=W(i))};this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),i()},e.prototype.transitionTime=function(t){void 0===t&&(t=0),this.style[j.transitionDuration]=t+"ms",this.hooks.trigger(this.hooks.eventTypes.time,t)},e.prototype.transitionTimingFunction=function(t){this.style[j.transitionTimingFunction]=t,this.hooks.trigger(this.hooks.eventTypes.timeFunction,t)},e.prototype.transitionProperty=function(){this.style[j.transitionProperty]=j.transform},e.prototype.move=function(t,e,n,r){this.setPending(n>0),this.transitionTimingFunction(r),this.transitionProperty(),this.transitionTime(n),this.translate(e);var i=3===this.options.probeType;n&&i&&this.startProbe(t,e),n||(this._reflow=this.content.offsetHeight,i&&this.hooks.trigger(this.hooks.eventTypes.move,e),this.hooks.trigger(this.hooks.eventTypes.end,e))},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition(),n=e.x,r=e.y;this.transitionTime(),this.translate({x:n,y:r}),this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,{x:n,y:r})}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt),it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),e.prototype.move=function(t,e,n,r){if(!n)return this.translate(e),3===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.move,e),void this.hooks.trigger(this.hooks.eventTypes.end,e);this.animate(t,e,n,r)},e.prototype.animate=function(t,e,n,r){var i=this,o=b(),s=o+n,a=3===this.options.probeType,u=function(){var l=b();if(l>=s)return i.translate(e),a&&i.hooks.trigger(i.hooks.eventTypes.move,e),void i.hooks.trigger(i.hooks.eventTypes.end,e);var c=r(l=(l-o)/n),h={};Object.keys(e).forEach((function(n){var r=t[n],i=e[n];h[n]=(i-r)*c+r})),i.translate(h),a&&i.hooks.trigger(i.hooks.eventTypes.move,h),i.pending&&(i.timer=W(u)),i.pending||(i.callStopWhenPending?i.callStopWhenPending=!1:i.hooks.trigger(i.hooks.eventTypes.end,e))};this.setPending(!0),this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),u()},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition();this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,e)}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt);var ot,st,at,ut,lt=function(){function t(t,e,n){this.wrapper=t,this.options=n,this.hooks=new Q(["beforeComputeBoundary","computeBoundary","momentum","end","ignoreHasScroll"]),this.refresh(e)}return t.prototype.start=function(){this.dist=0,this.setMovingDirection(0),this.setDirection(0)},t.prototype.move=function(t){return t=this.hasScroll?t:0,this.setMovingDirection(t),this.performDampingAlgorithm(t,this.options.outOfBoundaryDampingFactor)},t.prototype.setMovingDirection=function(t){this.movingDirection=t>0?-1:t<0?1:0},t.prototype.setDirection=function(t){this.direction=t>0?-1:t<0?1:0},t.prototype.performDampingAlgorithm=function(t,e){var n=this.currentPos+t;return(n>this.minScrollPos||nthis.minScrollPos&&this.options.bounces[0]||nthis.minScrollPos?this.minScrollPos:this.maxScrollPos),n},t.prototype.end=function(t){var e={duration:0},n=Math.abs(this.currentPos-this.startPos);if(this.options.momentum&&tthis.options.momentumLimitDistance){var r=-1===this.direction&&this.options.bounces[0]||1===this.direction&&this.options.bounces[1]?this.wrapperSize:0;e=this.hasScroll?this.momentum(this.currentPos,this.startPos,t,this.maxScrollPos,this.minScrollPos,r,this.options):{destination:this.currentPos,duration:0}}else this.hooks.trigger(this.hooks.eventTypes.end,e);return e},t.prototype.momentum=function(t,e,n,r,i,o,s){void 0===s&&(s=this.options);var a=t-e,u=Math.abs(a)/n,l=s.deceleration,c=s.swipeBounceTime,h=s.swipeTime,f={destination:t+u*u/l*(a<0?-1:1),duration:Math.min(h,2*u/l),rate:15};return this.hooks.trigger(this.hooks.eventTypes.momentum,f,a),f.destinationi&&(f.destination=o?Math.min(i+o/4,i+o/f.rate*u):i,f.duration=c),f.destination=Math.round(f.destination),f},t.prototype.updateDirection=function(){var t=this.currentPos-this.absStartPos;this.setDirection(t)},t.prototype.refresh=function(t){var e=this.options.rect,n=e.size,r=e.position,i="static"===window.getComputedStyle(this.wrapper,null).position,o=X(this.wrapper);this.wrapperSize=this.wrapper["width"===n?"clientWidth":"clientHeight"],this.setContent(t);var s=X(this.content);this.contentSize=s[n],this.relativeOffset=s[r],i&&(this.relativeOffset-=o[r]),this.computeBoundary(),this.setDirection(0)},t.prototype.setContent=function(t){t!==this.content&&(this.content=t,this.resetState())},t.prototype.resetState=function(){this.currentPos=0,this.startPos=0,this.dist=0,this.setDirection(0),this.setMovingDirection(0),this.resetStartPos()},t.prototype.computeBoundary=function(){this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);var t={minScrollPos:0,maxScrollPos:this.wrapperSize-this.contentSize};t.maxScrollPos<0&&(t.maxScrollPos-=this.relativeOffset,0===this.options.specifiedIndexAsContent&&(t.minScrollPos=-this.relativeOffset)),this.hooks.trigger(this.hooks.eventTypes.computeBoundary,t),this.minScrollPos=t.minScrollPos,this.maxScrollPos=t.maxScrollPos,this.hasScroll=this.options.scrollable&&this.maxScrollPosthis.minScrollPos?t=this.minScrollPos:te+this.directionLockThreshold?this.directionLocked="horizontal":e>=t+this.directionLockThreshold?this.directionLocked="vertical":this.directionLocked="none")},t.prototype.handleEventPassthrough=function(t){var e=ht[this.directionLocked];if(e){if(this.eventPassthrough===e.yes)return ct.yes(t);if(this.eventPassthrough===e.no)return ct.no(t)}return!1},t}(),pt=function(){function t(t,e,n,r,i){this.hooks=new Q(["start","beforeMove","scrollStart","scroll","beforeEnd","end","scrollEnd","contentNotMoved","detectMovingDirection","coordinateTransformation"]),this.scrollBehaviorX=t,this.scrollBehaviorY=e,this.actionsHandler=n,this.animater=r,this.options=i,this.directionLockAction=new ft(i.directionLockThreshold,i.freeScroll,i.eventPassthrough),this.enabled=!0,this.bindActionsHandler()}return t.prototype.bindActionsHandler=function(){var t=this;this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start,(function(e){return!t.enabled||t.handleStart(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move,(function(e){var n=e.deltaX,r=e.deltaY,i=e.e;if(!t.enabled)return!0;var o=function(t,e,n){return 2===n?[e,-t]:3===n?[-t,-e]:4===n?[-e,t]:[t,e]}(n,r,t.options.quadrant),s={deltaX:o[0],deltaY:o[1]};return t.hooks.trigger(t.hooks.eventTypes.coordinateTransformation,s),t.handleMove(s.deltaX,s.deltaY,i)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end,(function(e){return!t.enabled||t.handleEnd(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click,(function(e){t.enabled&&!e._constructed&&t.handleClick(e)}))},t.prototype.handleStart=function(t){var e=b();this.fingerMoved=!1,this.contentMoved=!1,this.startTime=e,this.directionLockAction.reset(),this.scrollBehaviorX.start(),this.scrollBehaviorY.start(),this.animater.doStop(),this.scrollBehaviorX.resetStartPos(),this.scrollBehaviorY.resetStartPos(),this.hooks.trigger(this.hooks.eventTypes.start,t)},t.prototype.handleMove=function(t,e,n){if(!this.hooks.trigger(this.hooks.eventTypes.beforeMove,n)){var r=this.scrollBehaviorX.getAbsDist(t),i=this.scrollBehaviorY.getAbsDist(e),o=b();if(this.checkMomentum(r,i,o))return!0;if(this.directionLockAction.checkMovingDirection(r,i,n))return this.actionsHandler.setInitiated(),!0;var s=this.directionLockAction.adjustDelta(t,e),a=this.scrollBehaviorX.getCurrentPos(),u=this.scrollBehaviorX.move(s.deltaX),l=this.scrollBehaviorY.getCurrentPos(),c=this.scrollBehaviorY.move(s.deltaY);if(!this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)){this.fingerMoved||(this.fingerMoved=!0);var h=u!==a||c!==l;this.contentMoved||h||this.hooks.trigger(this.hooks.eventTypes.contentNotMoved),!this.contentMoved&&h&&(this.contentMoved=!0,this.hooks.trigger(this.hooks.eventTypes.scrollStart)),this.contentMoved&&h&&(this.animater.translate({x:u,y:c}),this.dispatchScroll(o))}}},t.prototype.dispatchScroll=function(t){t-this.startTime>this.options.momentumLimitTime&&(this.startTime=t,this.scrollBehaviorX.updateStartPos(),this.scrollBehaviorY.updateStartPos(),1===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())),this.options.probeType>1&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())},t.prototype.checkMomentum=function(t,e,n){return n-this.endTime>this.options.momentumLimitTime&&e0?Math.ceil(e):Math.floor(e),n=n>0?Math.ceil(n):Math.floor(n),{x:e=x(e,o,i),y:n=x(n,u,a)}},t.prototype.handleClick=function(t){N(t.target,this.options.preventDefaultException)||(B(t),t.stopPropagation())},t.prototype.getCurrentPos=function(){return{x:this.scrollBehaviorX.getCurrentPos(),y:this.scrollBehaviorY.getCurrentPos()}},t.prototype.refresh=function(){this.endTime=0},t.prototype.destroy=function(){this.hooks.destroy()},t}();function gt(t,e,n,r){var i=["momentum","momentumLimitTime","momentumLimitDistance","deceleration","swipeBounceTime","swipeTime","outOfBoundaryDampingFactor","specifiedIndexAsContent"].reduce((function(e,n){return e[n]=t[n],e}),{});return i.scrollable=!!t[e],i.bounces=n,i.rect=r,i}function dt(t,e,n){n.forEach((function(n){var r,i;"string"==typeof n?r=i=n:(r=n.source,i=n.target),t.on(r,(function(){for(var t=[],n=0;n1&&t1||e>1))return!0},t.prototype.momentum=function(t,e){var n={time:0,easing:U.swiper,newX:t.x,newY:t.y},r=this.scrollBehaviorX.end(e),i=this.scrollBehaviorY.end(e);if(n.newX=k(r.destination)?n.newX:r.destination,n.newY=k(i.destination)?n.newY:i.destination,n.time=Math.max(r.duration,i.duration),this.hooks.trigger(this.hooks.eventTypes.momentum,n,this),n.newX!==t.x||n.newY!==t.y)return(n.newX>this.scrollBehaviorX.minScrollPos||n.newXthis.scrollBehaviorY.minScrollPos||n.newY=4)}}();if(wt){try{var xt={};Object.defineProperty(xt,"passive",{get:function(){!0}}),window.addEventListener("test-passive",(function(){}),xt)}catch(t){}}var Pt=function(t,e){for(var n in e)t[n]=e[n];return t};function Ct(t,e,n){return tn?n:t}var Tt=wt&&document.createElement("div").style,St=function(){if(!wt)return!1;for(var t=0,e=[{key:"standard",value:"transform"},{key:"webkit",value:"webkitTransform"},{key:"Moz",value:"MozTransform"},{key:"O",value:"OTransform"},{key:"ms",value:"msTransform"}];t=this.pages[n][0].cx);n++);for(i=this.pages[n]?this.pages[n].length:0;r=this.pages[0][r].cy);r++);return{pageX:n,pageY:r}},t.prototype.buildPagesMatrix=function(t,e){var n,r,i,o,s=[],a=0,u=0,l=this.scroll.scroller.scrollBehaviorX.maxScrollPos,c=this.scroll.scroller.scrollBehaviorY.maxScrollPos;for(r=Math.round(t/2),i=Math.round(e/2);a>-this.scrollerWidth;){for(s[u]=[],o=0,n=0;n>-this.scrollerHeight;)s[u][o]={x:Math.max(a,l),y:Math.max(n,c),width:t,height:e,cx:a-r,cy:n-i},n-=e,o++;a-=t,u++}return s},t}(),Et=function(){function t(t,e){this.scroll=t,this.slideOptions=e,this.slideX=!1,this.slideY=!1,this.currentPage=Pt({},Bt)}return t.prototype.refresh=function(){this.pagesMatrix=new Ot(this.scroll),this.checkSlideLoop(),this.currentPage=this.getAdjustedCurrentPage()},t.prototype.getAdjustedCurrentPage=function(){var t=this.currentPage,e=t.pageX,n=t.pageY;e=Math.min(e,this.pagesMatrix.pageLengthOfX-1),n=Math.min(n,this.pagesMatrix.pageLengthOfY-1),this.loopX&&(e=Math.min(e,this.pagesMatrix.pageLengthOfX-2)),this.loopY&&(n=Math.min(n,this.pagesMatrix.pageLengthOfY-2));var r=this.pagesMatrix.getPageStats(e,n);return{pageX:e,pageY:n,x:r.x,y:r.y}},t.prototype.setCurrentPage=function(t){this.currentPage=t},t.prototype.getInternalPage=function(t,e){t>=this.pagesMatrix.pageLengthOfX?t=this.pagesMatrix.pageLengthOfX-1:t<0&&(t=0),e>=this.pagesMatrix.pageLengthOfY?e=this.pagesMatrix.pageLengthOfY-1:e<0&&(e=0);var n=this.pagesMatrix.getPageStats(t,e);return{pageX:t,pageY:e,x:n.x,y:n.y}},t.prototype.getInitialPage=function(t,e){void 0===t&&(t=!1),void 0===e&&(e=!1);var n=this.slideOptions,r=n.startPageXIndex,i=n.startPageYIndex,o=this.loopX?1:0,s=this.loopY?1:0,a=t?o:this.currentPage.pageX,u=t?s:this.currentPage.pageY;e?(a=this.loopX?r+1:r,u=this.loopY?i+1:i):(a=t?o:this.currentPage.pageX,u=t?s:this.currentPage.pageY);var l=this.pagesMatrix.getPageStats(a,u);return{pageX:a,pageY:u,x:l.x,y:l.y}},t.prototype.getExposedPage=function(t){var e=Pt({},t);return this.loopX&&(e.pageX=this.fixedPage(e.pageX,this.pagesMatrix.pageLengthOfX-2)),this.loopY&&(e.pageY=this.fixedPage(e.pageY,this.pagesMatrix.pageLengthOfY-2)),e},t.prototype.getExposedPageByPageIndex=function(t,e){var n={pageX:t,pageY:e};this.loopX&&(n.pageX=t+1),this.loopY&&(n.pageY=e+1);var r=this.pagesMatrix.getPageStats(n.pageX,n.pageY);return{x:r.x,y:r.y,pageX:t,pageY:e}},t.prototype.getWillChangedPage=function(t){return t=Pt({},t),this.loopX&&(t.pageX=this.fixedPage(t.pageX,this.pagesMatrix.pageLengthOfX-2),t.x=this.pagesMatrix.getPageStats(t.pageX+1,0).x),this.loopY&&(t.pageY=this.fixedPage(t.pageY,this.pagesMatrix.pageLengthOfY-2),t.y=this.pagesMatrix.getPageStats(0,t.pageY+1).y),t},t.prototype.fixedPage=function(t,e){for(var n=[],r=0;r1?this.slideX=!0:this.slideX=!1,this.pagesMatrix.pages[0]&&this.pagesMatrix.pageLengthOfY>1?this.slideY=!0:this.slideY=!1,this.loopX=this.wannaLoop&&this.slideX,this.loopY=this.wannaLoop&&this.slideY,this.slideX&&this.slideY&&bt("slide does not support two direction at the same time.")},t}(),It=[{key:"next",name:"next"},{key:"prev",name:"prev"},{key:"goToPage",name:"goToPage"},{key:"getCurrentPage",name:"getCurrentPage"},{key:"startPlay",name:"startPlay"},{key:"pausePlay",name:"pausePlay"}].map((function(t){return{key:t.key,sourceKey:"plugins.slide."+t.name}})),Dt=function(){function t(t){this.scroll=t,this.cachedClonedPageDOM=[],this.resetLooping=!1,this.autoplayTimer=0,this.satisfyInitialization()&&this.init()}return t.prototype.satisfyInitialization=function(){return!(this.scroll.scroller.content.children.length<=0)||(bt("slide need at least one slide page to be initialised.please check your DOM layout."),!1)},t.prototype.init=function(){this.willChangeToPage=Pt({},Bt),this.handleBScroll(),this.handleOptions(),this.handleHooks(),this.createPages()},t.prototype.createPages=function(){this.pages=new Et(this.scroll,this.options)},t.prototype.handleBScroll=function(){this.scroll.registerType(["slideWillChange","slidePageChanged"]),this.scroll.proxy(It)},t.prototype.handleOptions=function(){var t=!0===this.scroll.options.slide?{}:this.scroll.options.slide,e={loop:!0,threshold:.1,speed:400,easing:At.bounce,listenFlick:!0,autoplay:!0,interval:3e3,startPageXIndex:0,startPageYIndex:0};this.options=Pt(e,t)},t.prototype.handleLoop=function(t){var e=this.options.loop,n=this.scroll.scroller.content,r=n.children.length;e&&(n!==t?(this.resetLoopChangedStatus(),this.removeClonedSlidePage(t),r>1&&this.cloneFirstAndLastSlidePage(n)):3===r&&this.initialised?(this.removeClonedSlidePage(n),this.moreToOnePageInLoop=!0,this.oneToMorePagesInLoop=!1):r>1?(this.initialised&&0===this.cachedClonedPageDOM.length?(this.oneToMorePagesInLoop=!0,this.moreToOnePageInLoop=!1):(this.removeClonedSlidePage(n),this.resetLoopChangedStatus()),this.cloneFirstAndLastSlidePage(n)):this.resetLoopChangedStatus())},t.prototype.resetLoopChangedStatus=function(){this.moreToOnePageInLoop=!1,this.oneToMorePagesInLoop=!1},t.prototype.handleHooks=function(){var t=this,e=this.scroll.hooks,n=this.scroll.scroller.hooks,r=this.options.listenFlick;this.prevContent=this.scroll.scroller.content,this.hooksFn=[],this.registerHooks(this.scroll,this.scroll.eventTypes.beforeScrollStart,this.pausePlay),this.registerHooks(this.scroll,this.scroll.eventTypes.scrollEnd,this.modifyCurrentPage),this.registerHooks(this.scroll,this.scroll.eventTypes.scrollEnd,this.startPlay),this.scroll.eventTypes.mousewheelMove&&(this.registerHooks(this.scroll,this.scroll.eventTypes.mousewheelMove,(function(){return!0})),this.registerHooks(this.scroll,this.scroll.eventTypes.mousewheelEnd,(function(e){1!==e.directionX&&1!==e.directionY||t.next(),-1!==e.directionX&&-1!==e.directionY||t.prev()}))),this.registerHooks(e,e.eventTypes.refresh,this.refreshHandler),this.registerHooks(e,e.eventTypes.destroy,this.destroy),this.registerHooks(n,n.eventTypes.beforeRefresh,(function(){t.handleLoop(t.prevContent),t.setSlideInlineStyle()})),this.registerHooks(n,n.eventTypes.momentum,this.modifyScrollMetaHandler),this.registerHooks(n,n.eventTypes.scroll,this.scrollHandler),this.registerHooks(n,n.eventTypes.checkClick,this.startPlay),r&&this.registerHooks(n,n.eventTypes.flick,this.flickHandler)},t.prototype.startPlay=function(){var t=this,e=this.options,n=e.interval;e.autoplay&&(clearTimeout(this.autoplayTimer),this.autoplayTimer=window.setTimeout((function(){t.next()}),n))},t.prototype.pausePlay=function(){this.options.autoplay&&clearTimeout(this.autoplayTimer)},t.prototype.setSlideInlineStyle=function(){var t=this.scroll.scroller,e=t.content,n=t.wrapper,r=this.scroll.options;[{direction:"scrollX",sizeType:"offsetWidth",styleType:"width"},{direction:"scrollY",sizeType:"offsetHeight",styleType:"height"}].forEach((function(t){var i=t.direction,o=t.sizeType,s=t.styleType;if(r[i]){for(var a=n[o],u=e.children,l=u.length,c=0;c({sortPosts:[],postListOffsetTop:0}),created(){this.setPosts()},mounted(){},watch:{currentPage(){this.$route.query.p!=this.currentPage&&this.$router.push({query:{...this.$route.query,p:this.currentPage}}),this.setPosts()},category(){this.setPosts()},tag(){this.setPosts()}},methods:{setPosts(){const t=this.currentPage,e=this.perPage;let n=[];n=this.category?this.$groupPosts.categories[this.category]:this.tag?this.$groupPosts.tags[this.tag]:this.$sortPosts,this.sortPosts=n.slice((t-1)*e,t*e)}}}),Yt=(n(326),Object(o.a)(jt,(function(){var t=this,e=t._self._c;return e("div",{ref:"postList",staticClass:"post-list"},[e("transition-group",{attrs:{tag:"div",name:"post"}},t._l(t.sortPosts,(function(n){return e("div",{key:n.key,staticClass:"post card-box",class:n.frontmatter.sticky&&"iconfont icon-zhiding"},[e("div",{staticClass:"title-wrapper"},[e("h2",[e("router-link",{attrs:{to:n.path}},[t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v(t._s(n.frontmatter.titleTag))]):t._e()])],1),t._v(" "),e("div",{staticClass:"article-info"},[n.author&&n.author.href?e("a",{staticClass:"iconfont icon-touxiang",attrs:{title:"作者",target:"_blank",href:n.author.href}},[t._v(t._s(n.author.name?n.author.name:n.author))]):n.author?e("span",{staticClass:"iconfont icon-touxiang",attrs:{title:"作者"}},[t._v(t._s(n.author.name?n.author.name:n.author))]):t._e(),t._v(" "),n.frontmatter.date?e("span",{staticClass:"iconfont icon-riqi",attrs:{title:"创建时间"}},[t._v(t._s(n.frontmatter.date.split(" ")[0]))]):t._e(),t._v(" "),!1!==t.$themeConfig.category&&n.frontmatter.categories?e("span",{staticClass:"iconfont icon-wenjian",attrs:{title:"分类"}},t._l(n.frontmatter.categories,(function(n,r){return e("router-link",{key:r,attrs:{to:"/categories/?category="+encodeURIComponent(n)}},[t._v(t._s(n))])})),1):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&n.frontmatter.tags&&n.frontmatter.tags[0]?e("span",{staticClass:"iconfont icon-biaoqian tags",attrs:{title:"标签"}},t._l(n.frontmatter.tags,(function(n,r){return e("router-link",{key:r,attrs:{to:"/tags/?tag="+encodeURIComponent(n)}},[t._v(t._s(n))])})),1):t._e()])]),t._v(" "),n.excerpt?e("div",{staticClass:"excerpt-wrapper"},[e("div",{staticClass:"excerpt",domProps:{innerHTML:t._s(n.excerpt)}}),t._v(" "),e("router-link",{staticClass:"readmore iconfont icon-jiantou-you",attrs:{to:n.path}},[t._v("阅读全文")])],1):t._e()])})),0)],1)}),[],!1,null,null,null).exports),Xt=(n(15),{name:"UpdateArticle",props:{length:{type:[String,Number],default:3},moreArticle:String},data:()=>({posts:[],currentPath:""}),created(){this.posts=this.$site.pages,this.currentPath=this.$page.path},computed:{topPublishPosts(){return this.$sortPostsByDate?this.$sortPostsByDate.filter(t=>{const{path:e}=t;return e!==this.currentPath}).slice(0,this.length):[]},isShowArticle(){const{frontmatter:t}=this.$page;return!(!1!==t.article)}},methods:{getNum:t=>t<9?"0"+(t+1):t+1,getDate:t=>t.frontmatter.date?t.frontmatter.date.split(" ")[0].slice(5,10):""},watch:{$route(){this.currentPath=this.$page.path}}}),Nt=(n(327),Object(o.a)(Xt,(function(){var t=this,e=t._self._c;return e("div",{class:["article-list",{"no-article-list":t.isShowArticle}]},[e("div",{staticClass:"article-title"},[e("router-link",{staticClass:"iconfont icon-bi",attrs:{to:t.moreArticle||"/archives/"}},[t._v("最近更新")])],1),t._v(" "),e("div",{staticClass:"article-wrapper"},[t._l(t.topPublishPosts,(function(n,r){return e("dl",{key:r},[e("dd",[t._v(t._s(t.getNum(r)))]),t._v(" "),e("dt",[e("router-link",{attrs:{to:n.path}},[e("div",[t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v("\n "+t._s(n.frontmatter.titleTag)+"\n ")]):t._e()])]),t._v(" "),e("span",{staticClass:"date"},[t._v(t._s(t.getDate(n)))])],1)])})),t._v(" "),e("dl",[e("dd"),t._v(" "),e("dt",[e("router-link",{staticClass:"more",attrs:{to:t.moreArticle||"/archives/"}},[t._v("更多文章>")])],1)])],2)])}),[],!1,null,null,null).exports),Rt={props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},computed:{pages(){return Math.ceil(this.total/this.perPage)}},methods:{threeNum(){let t=3;const e=this.currentPage,n=this.pages;return t=e<3?3:e>n-3?n-2:e,t},goPrex(){let t=this.currentPage;t>1&&this.handleEmit(--t)},goNext(){let t=this.currentPage;t3,expression:"currentPage > 3"}],staticClass:"ellipsis ell-two",attrs:{title:"上两页"},on:{click:function(e){return t.goIndex(t.currentPage-2)}}}),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage<=3,expression:"currentPage <= 3"}],staticClass:"card-box",class:{active:2===t.currentPage},on:{click:function(e){return t.goIndex(2)}}},[t._v("2")]),t._v(" "),e("span",{staticClass:"card-box",class:{active:t.currentPage>=3&&t.currentPage<=t.pages-2},on:{click:function(e){t.goIndex(t.threeNum())}}},[t._v(t._s(t.threeNum()))]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage=t.pages-2,expression:"currentPage >= pages - 2"}],staticClass:"card-box",class:{active:t.currentPage===t.pages-1},on:{click:function(e){return t.goIndex(t.pages-1)}}},[t._v(t._s(t.pages-1))]),t._v(" "),e("span",{staticClass:"card-box",class:{active:t.currentPage===t.pages},on:{click:function(e){return t.goIndex(t.pages)}}},[t._v(t._s(t.pages))])]),t._v(" "),e("span",{staticClass:"card-box next iconfont icon-jiantou-you",class:{disabled:t.currentPage===t.pages},on:{click:function(e){return t.goNext()}}},[e("p",[t._v("下一页")])])])}),[],!1,null,null,null).exports),Ut={computed:{blogger(){return this.$themeConfig.blogger},social(){return this.$themeConfig.social}}},Ht=(n(329),Object(o.a)(Ut,(function(){var t=this,e=t._self._c;return e("aside",{staticClass:"blogger-wrapper card-box"},[e("div",{staticClass:"avatar"},[e("img",{attrs:{src:t.blogger.avatar,alt:"头像",title:"我好看吗"}})]),t._v(" "),t.social&&t.social.icons&&t.social.icons.length?e("div",{staticClass:"icons"},t._l(t.social.icons,(function(n,r){return e("a",{key:r,class:["iconfont",n.iconClass],style:{width:100/t.social.icons.length+"%"},attrs:{href:n.link,title:n.title,target:"_blank"}})})),0):t._e(),t._v(" "),e("div",{staticClass:"blogger"},[e("span",{staticClass:"name"},[t._v(t._s(t.blogger.name))]),t._v(" "),e("span",{staticClass:"slogan"},[t._v(t._s(t.blogger.slogan))])])])}),[],!1,null,null,null).exports),Ft={props:{category:{type:String,default:""},categoriesData:{type:Array,default:[]},length:{type:[String,Number],default:"all"}},computed:{categories(){return"all"===this.length?this.categoriesData:this.categoriesData.slice(0,this.length)}}},Wt=(n(330),Object(o.a)(Ft,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"categories-wrapper card-box"},[e("router-link",{staticClass:"title iconfont icon-wenjianjia",attrs:{to:"/categories/",title:"全部分类"}},[t._v(t._s("all"===t.length?"全部分类":"文章分类"))]),t._v(" "),e("div",{staticClass:"categories"},[t._l(t.categories,(function(n,r){return e("router-link",{key:r,class:{active:n.key===t.category},attrs:{to:"/categories/?category="+encodeURIComponent(n.key)}},[t._v("\n "+t._s(n.key)+"\n "),e("span",[t._v(t._s(n.length))])])})),t._v(" "),"all"!==t.length&&t.length({tagBgColor:["#11a8cd","#F8B26A","#67CC86","#E15B64","#F47E60","#849B87"],tagStyleList:[]}),created(){for(let t=0,e=this.tags.length;tt.length?e("router-link",{attrs:{to:"/tags/"}},[t._v("更多...")]):t._e()],2)],1)}),[],!1,null,null,null).exports);_t.use(Dt);var Kt={data:()=>({isMQMobile:!1,slide:null,currentPageIndex:0,playTimer:0,mark:0,total:0,perPage:10,currentPage:1}),computed:{homeData(){return{...this.$page.frontmatter}},hasFeatures(){return!(!this.homeData.features||!this.homeData.features.length)},homeSidebarB(){const{htmlModules:t}=this.$themeConfig;return t?t.homeSidebarB:""},showBanner(){return!(this.$route.query.p&&1!=this.$route.query.p&&(!this.homeData.postList||"detailed"===this.homeData.postList))},bannerBgStyle(){let t=this.homeData.bannerBg;return t&&"auto"!==t?"none"===t?this.$themeConfig.bodyBgImg?"":"background: var(--mainBg);color: var(--textColor)":t.indexOf("background:")>-1?t:t.indexOf(".")>-1?`background: url(${this.$withBase(t)}) center center / cover no-repeat`:void 0:this.$themeConfig.bodyBgImg?"":"background: rgb(40,40,45) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABOSURBVFhH7c6xCQAgDAVRR9A6E4hLu4uLiWJ7tSnuQcIvr2TRYsw3/zOGGEOMIcYQY4gxxBhiDDGGGEOMIcYQY4gxxBhiDLkx52W4Gn1tuslCtHJvL54AAAAASUVORK5CYII=)"},actionLink(){return{link:this.homeData.actionLink,text:this.homeData.actionText}}},components:{NavLink:s,MainLayout:$t,PostList:Yt,UpdateArticle:Nt,BloggerBar:Ht,CategoriesBar:Wt,TagsBar:Gt,Pagination:zt},created(){this.total=this.$sortPosts.length},beforeMount(){this.isMQMobile=window.innerWidth<720},mounted(){this.$route.query.p&&(this.currentPage=Number(this.$route.query.p)),!this.hasFeatures||!this.isMQMobile||this.$route.query.p&&1!=this.$route.query.p||this.init(),this.hasFeatures&&window.addEventListener("resize",()=>{this.isMQMobile=window.innerWidth<720,!this.isMQMobile||this.slide||this.mark||(this.mark++,setTimeout(()=>{this.init()},60))})},beforeDestroy(){clearTimeout(this.playTimer),this.slide&&this.slide.destroy()},watch:{"$route.query.p"(){this.$route.query.p?this.currentPage=Number(this.$route.query.p):this.currentPage=1,this.hasFeatures&&1===this.currentPage&&this.isMQMobile&&setTimeout(()=>{this.slide&&this.slide.destroy(),this.init()},0)}},methods:{init(){clearTimeout(this.playTimer),this.slide=new _t(this.$refs.slide,{scrollX:!0,scrollY:!1,slide:{loop:!0,threshold:100},useTransition:!0,momentum:!1,bounce:!1,stopPropagation:!1,probeType:2,preventDefault:!1}),this.slide.on("beforeScrollStart",()=>{clearTimeout(this.playTimer)}),this.slide.on("scrollEnd",()=>{this.autoGoNext()}),this.slide.on("slideWillChange",t=>{this.currentPageIndex=t.pageX}),this.autoGoNext()},autoGoNext(){clearTimeout(this.playTimer),this.playTimer=setTimeout(()=>{this.slide.next()},4e3)},handlePagination(t){this.currentPage=t},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop}},Qt=(n(332),Object(o.a)(Kt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home-wrapper"},[e("div",{staticClass:"banner",class:{"hide-banner":!t.showBanner},style:t.bannerBgStyle},[e("div",{staticClass:"banner-conent",style:!t.homeData.features&&!t.homeData.heroImage&&"padding-top: 7rem"},[e("header",{staticClass:"hero"},[t.homeData.heroImage?e("img",{attrs:{src:t.$withBase(t.homeData.heroImage),alt:t.homeData.heroAlt}}):t._e(),t._v(" "),t.homeData.heroText?e("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.homeData.heroText)+"\n ")]):t._e(),t._v(" "),t.homeData.tagline?e("p",{staticClass:"description"},[t._v("\n "+t._s(t.homeData.tagline)+"\n ")]):t._e(),t._v(" "),t.homeData.actionText&&t.homeData.actionLink?e("p",{staticClass:"action"},[e("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.hasFeatures&&!t.isMQMobile?e("div",{staticClass:"features"},t._l(t.homeData.features,(function(n,r){return e("div",{key:r,staticClass:"feature"},[n.link?e("router-link",{attrs:{to:n.link}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])]):e("a",{attrs:{href:"javascript:;"}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])])],1)})),0):t._e()]),t._v(" "),t.hasFeatures?e("div",{directives:[{name:"show",rawName:"v-show",value:t.isMQMobile,expression:"isMQMobile"}],staticClass:"slide-banner"},[e("div",{staticClass:"banner-wrapper"},[e("div",{ref:"slide",staticClass:"slide-banner-scroll"},[e("div",{staticClass:"slide-banner-wrapper"},t._l(t.homeData.features,(function(n,r){return e("div",{key:r,staticClass:"slide-item"},[n.link?e("router-link",{attrs:{to:n.link}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])]):e("a",{attrs:{href:"javascript:;"}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])])],1)})),0)]),t._v(" "),e("div",{staticClass:"docs-wrapper"},t._l(t.homeData.features.length,(function(n,r){return e("span",{key:r,staticClass:"doc",class:{active:t.currentPageIndex===r}})})),0)])]):t._e()]),t._v(" "),e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return["simple"===t.homeData.postList?e("UpdateArticle",{staticClass:"card-box",attrs:{length:t.homeData.simplePostListLength||10,moreArticle:t.$themeConfig.updateBar&&t.$themeConfig.updateBar.moreArticle}}):t.homeData.postList&&"detailed"!==t.homeData.postList?t._e():[e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})],t._v(" "),e("Content",{staticClass:"theme-vdoing-content custom card-box"})]},proxy:!0},t.homeData.hideRightBar?null:{key:"mainRight",fn:function(){return[t.$themeConfig.blogger?e("BloggerBar"):t._e(),t._v(" "),!1!==t.$themeConfig.category&&t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,length:10}}):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,length:30}}):t._e(),t._v(" "),t.homeSidebarB?e("div",{staticClass:"custom-html-box card-box",domProps:{innerHTML:t._s(t.homeSidebarB)}}):t._e()]},proxy:!0}],null,!0)})],1)}),[],!1,null,"7d2bb426",null).exports),Jt=(n(21),n(333),n(334),n(335),n(336),n(339),n(295),n(342)),Zt=n.n(Jt),Vt=n(296),te=n.n(Vt);let ee=null,ne=null,re=null,ie=null;const oe=/[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\u3041-\u3096]|[\u30A1-\u30FA]/giu;var se={buildIndex(t,e){const n=t.filter(t=>!t.frontmatter||!1!==t.frontmatter.search),r={encode:e.encode||"simple",tokenize:e.tokenize||"forward",split:e.split||/\W+/,async:!0,doc:{id:"key",field:["title","headersStr","content"]}};ee=new Zt.a(r),ee.add(n);const i=n.filter(t=>t.charsets.cyrillic),o=n.filter(t=>t.charsets.cjk);i.length&&(ne=new Zt.a({...r,encode:"icase",split:/\s+/,tokenize:"forward"}),ne.add(i)),o.length&&(re=new Zt.a({...r,encode:!1,tokenize:function(t){const e=[];let n=null;do{n=oe.exec(t),n&&e.push(n[0])}while(n);return e}}),re.add(o)),ie=te.a.keyBy(n,"path")},async match(t,e,n=7){const r=[{field:"title",query:t,limit:n,boost:10},{field:"headersStr",query:t,limit:n,boost:7},{field:"content",query:t,limit:n}],i=await ee.search(r),o=ne?await ne.search(r):[],s=re?await re.search(r):[],a=te.a.uniqBy([...i,...o,...s],"path").map(n=>({...n,parentPageTitle:ae(n),...ue(n,pe(t),e)})),u=te.a.groupBy(a,"parentPageTitle");return te.a.values(u).map(t=>t.map((t,e)=>0===e?t:{...t,parentPageTitle:null})).flat()},normalizeString:pe};function ae(t){const e=t.path.split("/");let n="/";e[1]&&(n=`/${e[1]}/`);return(ie[n]||t).title}function ue(t,e,n){const r=function(t,e,n){const r=n.map(e=>ce(t,e)||he(t,e)).filter(t=>t);if(0===r.length)return null;if(r.every(t=>null!=t.headerIndex))return ce(t,e)||r[0];return he(t,e)||r.find(t=>null==t.headerIndex)}(t,e.toLowerCase(),n);if(!r)return{...le(t),slug:"",contentStr:null};if(null!=r.headerIndex)return{...le(t,r.headerIndex,r),slug:"#"+t.headers[r.headerIndex].slug,contentStr:null};let i=te.a.findLastIndex(t.headers||[],t=>null!=t.charIndex&&t.charIndext.level===n.level-1,e-1))&&(e=null)}const i=r.map(t=>t.title).join(" > "),o=r.slice(0,-1),s=te.a.sum(o.map(t=>(t.title||"").length))+3*o.length;return{headingStr:i,headingHighlight:n&&null!=n.headerIndex&&[n.charIndex+s,n.termLength]}}function ce(t,e){if(!t.headers)return null;for(let n=0;n=s.length)return{contentStr:s,contentHighlight:u};const l=te.a.round((120-r)/2),c=Math.max(a-l,0),h=Math.min(c+120,s.length);let f=s.slice(c,h);return u[0]=u[0]-c,c>0&&(f="..."+f,u[0]=u[0]+3),h({query:"",focused:!1,focusIndex:0,placeholder:void 0,suggestions:null}),computed:{queryTerms(){if(!this.query)return[];return se.normalizeString(this.query).split(/[^\p{L}\p{N}_]+/iu).filter(t=>t)},showSuggestions(){return this.focused&&this.suggestions&&this.suggestions.length},alignRight(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},watch:{query(){this.getSuggestions()}},mounted(){se.buildIndex(this.$site.pages,{}||{}),this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey);const t=this.urlParams();if(t){const e=t.get("query");e&&(this.query=decodeURI(e),this.focused=!0)}},beforeDestroy(){document.removeEventListener("keydown",this.onHotkey)},methods:{async getSuggestions(){if(!this.query||!this.queryTerms.length)return void(this.suggestions=[]);let t=await se.match(this.query,this.queryTerms,this.$site.themeConfig.searchMaxSuggestions||5);ge.processSuggestions&&(t=await ge.processSuggestions(t,this.query,this.queryTerms)),this.suggestions=t.map(t=>({...t,headingDisplay:de(t.headingStr,t.headingHighlight),contentDisplay:de(t.contentStr,t.contentHighlight)}))},getPageLocalePath(t){for(const e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable(t){let e=null;return null===e||(e=Array.isArray(e)?e:new Array(e),e.filter(e=>t.path.match(e)).length>0)},onHotkey(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown(){this.showSuggestions&&(this.focusIndexwindow.location.search?new URLSearchParams(window.location.search):null}},me=(n(343),Object(o.a)(ve,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"search-box"},[e("input",{ref:"input",class:{focused:t.focused},attrs:{"aria-label":"Search",placeholder:t.placeholder,autocomplete:"off",spellcheck:"false"},domProps:{value:t.query},on:{input:function(e){t.query=e.target.value},focus:function(e){t.focused=!0},blur:function(e){t.focused=!1},keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.go(t.focusIndex)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:t.onUp.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:t.onDown.apply(null,arguments)}]}}),t._v(" "),t.showSuggestions?e("ul",{staticClass:"suggestions",class:{"align-right":t.alignRight},on:{mouseleave:t.unfocus}},t._l(t.suggestions,(function(n,r){return e("li",{key:r,staticClass:"suggestion",class:{focused:r===t.focusIndex},on:{mousedown:function(e){return t.go(r)},mouseenter:function(e){return t.focus(r)}}},[e("a",{attrs:{href:n.path+n.slug},on:{click:function(t){t.preventDefault()}}},[n.parentPageTitle?e("div",{staticClass:"parent-page-title",domProps:{innerHTML:t._s(n.parentPageTitle)}}):t._e(),t._v(" "),e("div",{staticClass:"suggestion-row"},[e("div",{staticClass:"page-title"},[t._v(t._s(n.title||n.path))]),t._v(" "),e("div",{staticClass:"suggestion-content"},[n.headingStr?e("div",{staticClass:"header"},[t._v("\n "+t._s(n.headingDisplay.prefix)),e("span",{staticClass:"highlight"},[t._v(t._s(n.headingDisplay.highlightedContent))]),t._v(t._s(n.headingDisplay.suffix)+"\n ")]):t._e(),t._v(" "),n.contentStr?e("div",[t._v("\n "+t._s(n.contentDisplay.prefix)),e("span",{staticClass:"highlight"},[t._v(t._s(n.contentDisplay.highlightedContent))]),t._v(t._s(n.contentDisplay.suffix)+"\n ")]):t._e()])])])])})),0):t._e()])}),[],!1,null,null,null).exports),ye=(n(344),Object(o.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sidebar-button",attrs:{title:"目录"},on:{click:function(e){return t.$emit("toggle-sidebar")}}},[e("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[e("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),_e=n(323),be=n(125),we=n.n(be),ke={components:{NavLink:s,DropdownTransition:_e.a},data:()=>({open:!1,isMQMobile:!1}),props:{item:{required:!0}},computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text}},beforeMount(){this.isMQMobile=window.innerWidth<720,window.addEventListener("resize",()=>{this.isMQMobile=window.innerWidth<720})},methods:{toggle(){this.isMQMobile&&(this.open=!this.open)},isLastItemOfArray:(t,e)=>we()(e)===t},watch:{$route(){this.open=!1}}},xe=(n(346),{components:{NavLink:s,DropdownLink:Object(o.a)(ke,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[e("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.toggle}},[t.item.link?e("router-link",{staticClass:"link-title",attrs:{to:t.item.link}},[t._v(t._s(t.item.text))]):t._e(),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:!t.item.link,expression:"!item.link"}],staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow",class:t.open?"down":"right"})],1),t._v(" "),e("DropdownTransition",[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(n,r){return e("li",{key:n.link||r,staticClass:"dropdown-item"},["links"===n.type?e("h4",[t._v(t._s(n.text))]):t._e(),t._v(" "),"links"===n.type?e("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(n.items,(function(r){return e("li",{key:r.link,staticClass:"dropdown-subitem"},[e("NavLink",{attrs:{item:r},on:{focusout:function(e){t.isLastItemOfArray(r,n.items)&&t.isLastItemOfArray(n,t.item.items)&&t.toggle()}}})],1)})),0):e("NavLink",{attrs:{item:n},on:{focusout:function(e){t.isLastItemOfArray(n,t.item.items)&&t.toggle()}}})],1)})),0)])],1)}),[],!1,null,null,null).exports},computed:{userNav(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav(){const{locales:t}=this.$site;if(t&&Object.keys(t).length>1){const e=this.$page.path,n=this.$router.options.routes,r=this.$site.themeConfig.locales||{},i={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(t).map(i=>{const o=t[i],s=r[i]&&r[i].label||o.lang;let a;return o.lang===this.$lang?a=e:(a=e.replace(this.$localeConfig.path,i),n.some(t=>t.path===a)||(a=i)),{text:s,link:a}})};return[...this.userNav,i]}return this.userNav},userLinks(){return(this.nav||[]).map(t=>Object.assign(Object(r.k)(t),{items:(t.items||[]).map(r.k)}))},repoLink(){const{repo:t}=this.$site.themeConfig;return t?/^https?:/.test(t)?t:"https://github.com/"+t:null},repoLabel(){if(!this.repoLink)return;if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;const t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"];for(let n=0;n({linksWrapMaxWidth:null}),mounted(){const t=parseInt(Ce(this.$el,"paddingLeft"))+parseInt(Ce(this.$el,"paddingRight")),e=()=>{document.documentElement.clientWidth<719?this.linksWrapMaxWidth=null:this.linksWrapMaxWidth=this.$el.offsetWidth-t-(this.$refs.siteName&&this.$refs.siteName.offsetWidth||0)};e(),window.addEventListener("resize",e,!1)},computed:{algolia(){return this.$themeLocaleConfig.algolia||this.$site.themeConfig.algolia||{}},isAlgoliaSearch(){return this.algolia&&this.algolia.apiKey&&this.algolia.indexName}}},Se=(n(348),Object(o.a)(Te,(function(){var t=this,e=t._self._c;return e("header",{staticClass:"navbar blur"},[e("SidebarButton",{on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),e("router-link",{staticClass:"home-link",attrs:{to:t.$localePath}},[t.$site.themeConfig.logo?e("img",{staticClass:"logo",attrs:{src:t.$withBase(t.$site.themeConfig.logo),alt:t.$siteTitle}}):t._e(),t._v(" "),t.$siteTitle?e("span",{ref:"siteName",staticClass:"site-name",class:{"can-hide":t.$site.themeConfig.logo}},[t._v(t._s(t.$siteTitle))]):t._e()]),t._v(" "),e("div",{staticClass:"links",style:t.linksWrapMaxWidth?{"max-width":t.linksWrapMaxWidth+"px"}:{}},[t.isAlgoliaSearch?e("AlgoliaSearchBox",{attrs:{options:t.algolia}}):!1!==t.$site.themeConfig.search&&!1!==t.$page.frontmatter.search?e("SearchBox"):t._e(),t._v(" "),e("NavLinks",{staticClass:"can-hide"})],1)],1)}),[],!1,null,null,null).exports),Le=n(303),Ae=n.n(Le),Be={name:"PageEdit",computed:{tags(){return this.$frontmatter.tags},lastUpdated(){return this.$page.lastUpdated},lastUpdatedText(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink(){const t=Ae()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,{repo:e,docsDir:n="",docsBranch:r="master",docsRepo:i=e}=this.$site.themeConfig;return t&&i&&this.$page.relativePath?this.createEditLink(e,i,n,r,this.$page.relativePath):null},editLinkText(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink(t,e,n,i,o){if(/bitbucket.org/.test(e)){return e.replace(r.b,"")+"/src"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o+`?mode=edit&spa=0&at=${i}&fileviewer=file-view-default`}if(/gitlab.com/.test(e)){return e.replace(r.b,"")+"/-/edit"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o}const s=/gitee.com/;if(s.test(e)){return e.replace(s,"gitee.com/-/ide/project")+"/edit"+`/${i}/-/`+(n?n.replace(r.b,"")+"/":"")+o}return(r.j.test(e)?e:"https://github.com/"+e).replace(r.b,"")+"/edit"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o}}},Me=(n(349),Object(o.a)(Be,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"page-edit"},[t.editLink?e("div",{staticClass:"edit-link"},[e("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),e("OutboundLink")],1):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&t.tags&&t.tags[0]?e("div",{staticClass:"tags"},t._l(t.tags,(function(n,r){return e("router-link",{key:r,attrs:{to:"/tags/?tag="+encodeURIComponent(n),title:"标签"}},[t._v("#"+t._s(n))])})),1):t._e(),t._v(" "),t.lastUpdated?e("div",{staticClass:"last-updated"},[e("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),e("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null).exports),Oe=n(350),Ee=n.n(Oe),Ie={name:"PageNav",props:["sidebarItems"],computed:{prev(){return $e(De.PREV,this)},next(){return $e(De.NEXT,this)}},methods:{showTooltip(t){const e=document.body.clientWidth,n=t.clientX,r=t.target.querySelector(".tooltip");if(!r)return;const i=r.style;nt,getPageLinkConfig:({frontmatter:t})=>t.next},PREV:{resolveLink:function(t,e){return je(t,e,-1)},getThemeLinkConfig:({prevLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.prev}};function $e(t,{$themeConfig:e,$page:n,$route:i,$site:o,sidebarItems:s}){const{resolveLink:a,getThemeLinkConfig:u,getPageLinkConfig:l}=t,c=u(e),h=l(n),f=Ae()(h)?c:h;return!1===f?void 0:Ee()(f)?Object(r.l)(o.pages,f,i.path):a(n,s)}function je(t,e,n){const r=[];!function t(e,n){for(let r=0,i=e.length;r({date:"",classify1:"",classifyList:[],cataloguePermalink:"",author:null,categories:[]}),created(){this.getPageInfo()},watch:{"$route.path"(){this.classifyList=[],this.getPageInfo()}},methods:{getPageInfo(){const t=this.$page,{relativePath:e}=t,{sidebar:n}=this.$themeConfig,r=e.split("/");r.forEach((t,e)=>{const n=t.split(".");if(e!==r.length-1)if(1===n)this.classifyList.push(n[0]);else{const e=t.indexOf(".");this.classifyList.push(t.substring(e+1)||"")}}),this.classify1=this.classifyList[0];const i=n&&n.catalogue?n.catalogue[this.classify1]:"",o=this.$frontmatter.author||this.$themeConfig.author;let s=(t.frontmatter.date||"").split(" ")[0];const{categories:a}=this.$frontmatter;this.date=s,this.cataloguePermalink=i,this.author=o,this.categories=a},getLink(t){const{cataloguePermalink:e}=this;return t===e?e:`${e}${"/"===e.charAt(e.length-1)?"":"/"}#${t}`}}}),Re=(n(352),Object(o.a)(Ne,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"articleInfo-wrap"},[e("div",{staticClass:"articleInfo"},[t.classify1&&"_posts"!==t.classify1?e("ul",{staticClass:"breadcrumbs"},[e("li",[e("router-link",{staticClass:"iconfont icon-home",attrs:{to:"/",title:"首页"}})],1),t._v(" "),t._l(t.classifyList,(function(n){return e("li",{key:n},[t.cataloguePermalink?e("router-link",{attrs:{to:t.getLink(n)}},[t._v(t._s(n))]):!1!==t.$themeConfig.category?e("router-link",{attrs:{to:"/categories/?category="+encodeURIComponent(n),title:"分类"}},[t._v(t._s(n))]):e("span",[t._v(t._s(n))])],1)}))],2):t._e(),t._v(" "),e("div",{staticClass:"info"},[t.author?e("div",{staticClass:"author iconfont icon-touxiang",attrs:{title:"作者"}},[t.author.href||t.author.link&&"string"==typeof t.author.link?e("a",{staticClass:"beLink",attrs:{href:t.author.href||t.author.link,target:"_blank",title:"作者"}},[t._v(t._s(t.author.name))]):e("a",{attrs:{href:"javascript:;"}},[t._v(t._s(t.author.name||t.author))])]):t._e(),t._v(" "),t.date?e("div",{staticClass:"date iconfont icon-riqi",attrs:{title:"创建时间"}},[e("a",{attrs:{href:"javascript:;"}},[t._v(t._s(t.date))])]):t._e(),t._v(" "),!1===t.$themeConfig.category||t.classify1&&"_posts"!==t.classify1||!t.categories?t._e():e("div",{staticClass:"date iconfont icon-wenjian",attrs:{title:"分类"}},t._l(t.categories,(function(n,r){return e("router-link",{key:r,attrs:{to:"/categories/?category="+encodeURIComponent(n)}},[t._v(t._s(n+" "))])})),1)])])])}),[],!1,null,"06225672",null).exports),ze={data:()=>({pageData:null,isStructuring:!0,appointDir:{}}),created(){this.getPageData();const t=this.$themeConfig.sidebar;t&&"auto"!==t||(this.isStructuring=!1,console.error("目录页数据依赖于结构化的侧边栏数据,请在主题设置中将侧边栏字段设置为'structuring',否则无法获取目录数据。"))},methods:{getPageData(){const t=this.$frontmatter.pageComponent;t&&t.data?this.pageData={...t.data,title:this.$frontmatter.title}:console.error("请在front matter中设置pageComponent和pageComponent.data数据")},getCatalogueList(){const{sidebar:t}=this.$site.themeConfig,{data:e}=this.$frontmatter.pageComponent;let n=(e.path||e.key).split("/"),r=t[`/${n[0]}/`];return n.length>1&&(n.shift(),r=this.appointDirDeal(0,n,r)),r||console.error("未获取到目录数据,请查看front matter中设置的path是否正确。"),r},type:t=>Object.prototype.toString.call(t).match(/\[object (.*?)\]/)[1].toLowerCase(),appointDirDeal(t,e,n){let r=e[t];void 0!==r&&-1!==r.indexOf(".")&&(r=r.substring(r.indexOf(".")+1));for(let i=0;i({headers:[],hashText:""}),mounted(){this.getHeadersData(),this.getHashText()},watch:{$route(){this.headers=this.$page.headers,this.getHashText()}},methods:{getHeadersData(){this.headers=this.$page.headers},getHashText(){this.hashText=decodeURIComponent(window.location.hash.slice(1))}}},Fe=(n(354),{data:()=>({badges:["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg=="],currentBadge:""}),created(){this.$themeConfig.titleBadgeIcons&&(this.badges=this.$themeConfig.titleBadgeIcons),this.currentBadge=this.getBadge()},watch:{"$route.path"(){this.currentBadge=this.getBadge()}},methods:{getBadge(){return this.badges[Math.floor(Math.random()*this.badges.length)]}}}),We={mixins:[Fe],data:()=>({updateBarConfig:null}),props:["sidebarItems"],components:{PageEdit:Me,PageNav:Xe,ArticleInfo:Re,Catalogue:Ue,UpdateArticle:Nt,RightMenu:Object(o.a)(He,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"right-menu-wrapper"},[e("div",{staticClass:"right-menu-margin"},[e("div",{staticClass:"right-menu-title"},[t._v("目录")]),t._v(" "),e("div",{staticClass:"right-menu-content"},t._l(t.headers,(function(n,r){return e("div",{key:r,class:["right-menu-item","level"+n.level,{active:n.slug===t.hashText}]},[e("a",{attrs:{href:"#"+n.slug}},[t._v(t._s(n.title))])])})),0)])])}),[],!1,null,null,null).exports},created(){this.updateBarConfig=this.$themeConfig.updateBar},computed:{bgStyle(){const{contentBgStyle:t}=this.$themeConfig;return t?"bg-style-"+t:""},isShowUpdateBar(){return!this.updateBarConfig||!1!==this.updateBarConfig.showToArticle},showTitle(){return!this.$frontmatter.pageComponent},showRightMenu(){const{$frontmatter:t,$themeConfig:e,$page:n}=this,{sidebar:r}=t;return!1!==e.rightMenuBar&&n.headers&&!1!==(t&&r&&!1!==r)},pageComponent(){return!!this.$frontmatter.pageComponent&&this.$frontmatter.pageComponent.name},isShowSlotT(){return this.getShowStatus("pageTshowMode")},isShowSlotB(){return this.getShowStatus("pageBshowMode")}},methods:{getShowStatus(t){const{htmlModules:e}=this.$themeConfig;return!!e&&("article"===e[t]?this.isArticle():"custom"!==e[t]||!this.isArticle())},isArticle(){return!1!==this.$frontmatter.article}}},qe=(n(355),Object(o.a)(We,(function(){var t=this,e=t._self._c;return e("div",[e("main",{staticClass:"page"},[e("div",{class:"theme-vdoing-wrapper "+t.bgStyle},[t.isArticle()?e("ArticleInfo"):e("div",{staticClass:"placeholder"}),t._v(" "),t.pageComponent?e(t.pageComponent,{tag:"component",staticClass:"theme-vdoing-content"}):t._e(),t._v(" "),e("div",{staticClass:"content-wrapper"},[t.showRightMenu?e("RightMenu"):t._e(),t._v(" "),t.showTitle?e("h1",[!1!==t.$themeConfig.titleBadge?e("img",{attrs:{src:t.currentBadge}}):t._e(),t._v(t._s(this.$page.title)),t.$frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v(t._s(t.$frontmatter.titleTag))]):t._e()]):t._e(),t._v(" "),t.isShowSlotT?t._t("top"):t._e(),t._v(" "),e("Content",{staticClass:"theme-vdoing-content"})],2),t._v(" "),t.isShowSlotB?t._t("bottom"):t._e(),t._v(" "),e("PageEdit"),t._v(" "),e("PageNav",t._b({},"PageNav",{sidebarItems:t.sidebarItems},!1))],2),t._v(" "),t.isShowUpdateBar?e("UpdateArticle",{attrs:{length:3,moreArticle:t.updateBarConfig&&t.updateBarConfig.moreArticle}}):t._e()],1)])}),[],!1,null,null,null).exports),Ge={data:()=>({category:"",total:0,perPage:10,currentPage:1}),components:{MainLayout:$t,PostList:Yt,Pagination:zt,CategoriesBar:Wt},mounted(){const t=this.$route.query.category;t?(this.category=t,this.total=this.$groupPosts.categories[t].length):this.total=this.$sortPosts.length,this.$route.query.p&&(this.currentPage=Number(this.$route.query.p));const e=document.querySelector(".categories");e&&setTimeout(()=>{const t=e.querySelector(".active"),n=t?t.offsetTop:0;e.scrollTo({top:n,behavior:"smooth"})},300)},methods:{handlePagination(t){this.currentPage=t}},watch:{"$route.query.category"(t){this.category=t?decodeURIComponent(t):"",this.category?this.total=this.$groupPosts.categories[this.category].length:this.total=this.$sortPosts.length,this.currentPage=1}}},Ke=(n(356),Object(o.a)(Ge,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page categories-page"},[e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return[t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,category:t.category}}):t._e(),t._v(" "),e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage,category:t.category}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})]},proxy:!0},{key:"mainRight",fn:function(){return[t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,category:t.category}}):t._e()]},proxy:!0}])})],1)}),[],!1,null,null,null).exports),Qe={data:()=>({tag:"",total:0,perPage:10,currentPage:1}),components:{MainLayout:$t,PostList:Yt,Pagination:zt,TagsBar:Gt},mounted(){const t=this.$route.query.tag;t?(this.tag=t,this.total=this.$groupPosts.tags[t].length):this.total=this.$sortPosts.length,this.$route.query.p&&(this.currentPage=Number(this.$route.query.p))},methods:{handlePagination(t){this.currentPage=t}},watch:{"$route.query.tag"(t){this.tag=t?decodeURIComponent(t):"",this.tag?this.total=this.$groupPosts.tags[this.tag].length:this.total=this.$sortPosts.length,this.currentPage=1}}},Je=(n(357),Object(o.a)(Qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page tags-page"},[e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return[t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,tag:t.tag}}):t._e(),t._v(" "),e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage,tag:t.tag}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})]},proxy:!0},{key:"mainRight",fn:function(){return[t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,tag:t.tag}}):t._e()]},proxy:!0}])})],1)}),[],!1,null,null,null).exports),Ze=n(68),Ve=n.n(Ze),tn={mixins:[Fe],data:()=>({postsList:[],countByYear:{},perPage:80,currentPage:1}),created(){this.getPageData();const{$sortPostsByDate:t,countByYear:e}=this;for(let n=0;n{if(this.postsList.lengthr&&n+r>=i-250&&this.loadmore()}},200))},methods:{getPageData(){const t=this.currentPage,e=this.perPage;this.postsList=this.postsList.concat(this.$sortPostsByDate.slice((t-1)*e,t*e))},loadmore(){this.currentPage=this.currentPage+1,this.getPageData()},getYear(t){const e=this.postsList[t];if(!e)return;const{frontmatter:{date:n}}=e;return n&&"string"===Object(r.n)(n)?n.slice(0,4):void 0},getDate(t){const{frontmatter:{date:e}}=t;if(e&&"string"===Object(r.n)(e))return e.slice(5,10)}}},en=(n(358),Object(o.a)(tn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page archives-page"},[e("div",{staticClass:"theme-vdoing-wrapper"},[e("h1",[!1!==t.$themeConfig.titleBadge?e("img",{attrs:{src:t.currentBadge}}):t._e(),t._v("\n "+t._s(t.$page.title)+"\n ")]),t._v(" "),e("div",{staticClass:"count"},[t._v("\n 总共 "),e("i",[t._v(t._s(t.$sortPostsByDate.length))]),t._v(" 篇文章\n ")]),t._v(" "),e("ul",[t._l(t.postsList,(function(n,r){return[(t.year=t.getYear(r))!==t.getYear(r-1)?e("li",{key:r+t.$sortPostsByDate.length,staticClass:"year"},[e("h2",[t._v("\n "+t._s(t.year)+"\n "),e("span",[e("i",[t._v(t._s(t.countByYear[t.year]))]),t._v(" 篇\n ")])])]):t._e(),t._v(" "),e("li",{key:r},[e("router-link",{attrs:{to:n.path}},[e("span",{staticClass:"date"},[t._v(t._s(t.getDate(n)))]),t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v("\n "+t._s(n.frontmatter.titleTag)+"\n ")]):t._e()])],1)]}))],2)])])}),[],!1,null,null,null).exports),nn={name:"Sidebar",components:{SidebarLinks:n(322).default,NavLinks:Pe},props:["items"],computed:{blogger(){return this.$themeConfig.blogger}}},rn=(n(361),Object(o.a)(nn,(function(){var t=this,e=t._self._c;return e("aside",{staticClass:"sidebar"},[t.blogger?e("div",{staticClass:"blogger"},[e("img",{attrs:{src:t.blogger.avatar}}),t._v(" "),e("div",{staticClass:"blogger-info"},[e("h3",[t._v(t._s(t.blogger.name))]),t._v(" "),t.blogger.social?e("div",{staticClass:"icons"},t._l(t.blogger.social.icons,(function(t,n){return e("a",{key:n,class:["iconfont",t.iconClass],attrs:{href:t.link,title:t.title,target:"_blank"}})})),0):e("span",[t._v(t._s(t.blogger.slogan))])])]):t._e(),t._v(" "),e("NavLinks"),t._v(" "),t._t("top"),t._v(" "),e("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom")],2)}),[],!1,null,null,null).exports),on=Object.assign||function(t){for(var e=1;e({threshold:100,scrollTop:null,showCommentBut:!1,commentTop:null,currentMode:"",showModeBox:!1,modeList:[{name:"跟随系统",icon:"icon-zidong",KEY:"auto"},{name:"浅色模式",icon:"icon-rijianmoshi",KEY:"light"},{name:"深色模式",icon:"icon-yejianmoshi",KEY:"dark"},{name:"阅读模式",icon:"icon-yuedu",KEY:"read"}],_scrollTimer:null,_textareaEl:null,_recordScrollTop:null,COMMENT_SELECTOR_1:"#vuepress-plugin-comment",COMMENT_SELECTOR_2:"#valine-vuepress-comment",COMMENT_SELECTOR_3:".vssue"}),mounted(){if(this.currentMode=cn.get("mode")||this.$themeConfig.defaultMode||"auto",this.scrollTop=this.getScrollTop(),window.addEventListener("scroll",Ve()(()=>{this.scrollTop=this.getScrollTop()},100)),window.addEventListener("load",()=>{this.getCommentTop()}),document.documentElement.clientWidth<719){this.$refs.modeBox.onclick=()=>{this.showModeBox=!1},window.addEventListener("scroll",Ve()(()=>{this.showModeBox&&(this.showModeBox=!1)},100))}const t=document.querySelectorAll(".buttons .button");for(let e=0;e{n.classList.remove("hover")},150)}))}},computed:{showToTop(){return this.scrollTop>this.threshold}},methods:{toggleMode(t){this.currentMode=t,this.$emit("toggle-theme-mode",t)},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,scrollToTop(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0},getCommentTop(){setTimeout(()=>{let t=document.querySelector(this.COMMENT_SELECTOR_1)||document.querySelector(this.COMMENT_SELECTOR_2)||document.querySelector(this.COMMENT_SELECTOR_3);t&&(this.showCommentBut=!1!==this.$frontmatter.comment&&!0!==this.$frontmatter.home,this.commentTop=t.offsetTop-58)},500)},scrollToComment(){window.scrollTo({top:this.commentTop,behavior:"smooth"}),this._textareaEl=document.querySelector(this.COMMENT_SELECTOR_1+" textarea")||document.querySelector(this.COMMENT_SELECTOR_2+" input")||document.querySelector(this.COMMENT_SELECTOR_3+" textarea"),this._textareaEl&&this.getScrollTop()!==this._recordScrollTop?document.addEventListener("scroll",this._handleListener):this._textareaEl&&this.getScrollTop()===this._recordScrollTop&&this._handleFocus()},_handleListener(){clearTimeout(this._scrollTimer),this._scrollTimer=setTimeout(()=>{document.removeEventListener("scroll",this._handleListener),this._recordScrollTop=this.getScrollTop(),this._handleFocus()},30)},_handleFocus(){this._textareaEl.focus(),this._textareaEl.classList.add("yellowBorder"),setTimeout(()=>{this._textareaEl.classList.remove("yellowBorder")},500)}},watch:{"$route.path"(){this.showCommentBut=!1,this.getCommentTop()}}},fn=(n(362),Object(o.a)(hn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"buttons"},[e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.showToTop,expression:"showToTop"}],staticClass:"button blur go-to-top iconfont icon-fanhuidingbu",attrs:{title:"返回顶部"},on:{click:t.scrollToTop}})]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCommentBut,expression:"showCommentBut"}],staticClass:"button blur go-to-comment iconfont icon-pinglun",attrs:{title:"去评论"},on:{click:t.scrollToComment}}),t._v(" "),e("div",{staticClass:"button blur theme-mode-but iconfont icon-zhuti",attrs:{title:"主题模式"},on:{mouseenter:function(e){t.showModeBox=!0},mouseleave:function(e){t.showModeBox=!1},click:function(e){t.showModeBox=!0}}},[e("transition",{attrs:{name:"mode"}},[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.showModeBox,expression:"showModeBox"}],ref:"modeBox",staticClass:"select-box",on:{click:function(t){t.stopPropagation()},touchstart:function(t){t.stopPropagation()}}},t._l(t.modeList,(function(n){return e("li",{key:n.KEY,staticClass:"iconfont",class:[n.icon,{active:n.KEY===t.currentMode}],on:{click:function(e){return t.toggleMode(n.KEY)}}},[t._v("\n "+t._s(n.name)+"\n ")])})),0)])],1)],1)}),[],!1,null,null,null).exports),pn={computed:{social(){return this.$themeConfig.social},footer(){return this.$themeConfig.footer}}},gn=(n(363),Object(o.a)(pn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"footer"},[t.social&&t.social.icons?e("div",{staticClass:"icons"},t._l(t.social.icons,(function(t,n){return e("a",{key:n,class:["iconfont",t.iconClass],attrs:{href:t.link,title:t.title,target:"_blank"}})})),0):t._e(),t._v(" "),t._v("\n Theme by\n "),e("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing",target:"_blank",title:"本站主题"}},[t._v("Vdoing")]),t._v(" "),t.footer?[t._v("\n | Copyright © "+t._s(t.footer.createYear)+"-"+t._s((new Date).getFullYear())+"\n "),e("span",{domProps:{innerHTML:t._s(t.footer.copyrightInfo)}})]:t._e()],2)}),[],!1,null,null,null).exports),dn={data:()=>({bgImg:"",opacity:.5}),mounted(){let{bodyBgImg:t,bodyBgImgOpacity:e,bodyBgImgInterval:n=15}=this.$themeConfig;if("string"===Object(r.n)(t))this.bgImg=t;else if("array"===Object(r.n)(t)){let e=0,r=null;this.bgImg=t[e],clearInterval(r),r=setInterval(()=>{if(++e>=t.length&&(e=0),this.bgImg=t[e],t[e+1]){(new Image).src=t[e+1]}},1e3*n)}void 0!==e&&(this.opacity=e)}},vn=(n(364),Object(o.a)(dn,(function(){return(0,this._self._c)("div",{staticClass:"body-bg",style:`background: url(${this.bgImg}) center center / cover no-repeat;opacity:${this.opacity}`})}),[],!1,null,null,null).exports);var mn={components:{Home:Qt,Navbar:Se,Page:qe,CategoriesPage:Ke,TagsPage:Je,ArchivesPage:en,Sidebar:rn,Footer:gn,Buttons:fn,BodyBgImg:vn},data:()=>({hideNavbar:!1,isSidebarOpen:!0,showSidebar:!1,themeMode:"auto",showWindowLB:!0,showWindowRB:!0}),computed:{sidebarSlotTop(){return this.getHtmlStr("sidebarT")},sidebarSlotBottom(){return this.getHtmlStr("sidebarB")},pageSlotTop(){return this.getHtmlStr("pageT")},pageSlotBottom(){return this.getHtmlStr("pageB")},windowLB(){return this.getHtmlStr("windowLB")},windowRB(){return this.getHtmlStr("windowRB")},showRightMenu(){const{headers:t}=this.$page;return!this.$frontmatter.home&&!1!==this.$themeConfig.rightMenuBar&&t&&t.length&&!1!==this.$frontmatter.sidebar},shouldShowNavbar(){const{themeConfig:t}=this.$site,{frontmatter:e}=this.$page;return!1!==e.navbar&&!1!==t.navbar&&(this.$title||t.logo||t.repo||t.nav||this.$themeLocaleConfig.nav)},shouldShowSidebar(){const{frontmatter:t}=this.$page;return!t.home&&!1!==t.sidebar&&this.sidebarItems.length&&!1!==t.showSidebar},sidebarItems(){return Object(r.m)(this.$page,this.$page.regularPath,this.$site,this.$localePath)},pageClasses(){const t=this.$page.frontmatter.pageClass;return[{"no-navbar":!this.shouldShowNavbar,"hide-navbar":this.hideNavbar,"sidebar-open":this.isSidebarOpen,"no-sidebar":!this.shouldShowSidebar,"have-rightmenu":this.showRightMenu,"have-body-img":this.$themeConfig.bodyBgImg,"only-sidebarItem":1===this.sidebarItems.length&&"page"===this.sidebarItems[0].type},t]}},created(){const t=this.$themeConfig.sidebarOpen;!1===t&&(this.isSidebarOpen=t)},beforeMount(){this.isSidebarOpenOfclientWidth();const t=cn.get("mode"),{defaultMode:e}=this.$themeConfig;e&&"auto"!==e&&!t?this.themeMode=e:t&&"auto"!==t&&"auto"!==e?this.themeMode=t:this._autoMode(),this.setBodyClass();const n=this.$themeConfig.social;if(n&&n.iconfontCssFile){let t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),t.setAttribute("href",n.iconfontCssFile),document.head.appendChild(t)}},mounted(){const t=document.location.hash;if(t.length>1){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);n&&n.scrollIntoView()}this.showSidebar=!0,this.$router.afterEach(()=>{this.isSidebarOpenOfclientWidth()});let e=0,n=0;window.addEventListener("scroll",te.a.throttle(()=>{this.isSidebarOpen||(e=this.getScrollTop(),this.hideNavbar=n58,setTimeout(()=>{n=e},0))},300))},watch:{isSidebarOpen(){this.isSidebarOpen&&(this.hideNavbar=!1)},themeMode(){this.setBodyClass()}},methods:{getHtmlStr(t){const{htmlModules:e}=this.$themeConfig;return e?e[t]:""},setBodyClass(){let{pageStyle:t="card",bodyBgImg:e}=this.$themeConfig;("card"!==t&&"line"!==t||e)&&(t="card"),document.body.className=`theme-mode-${this.themeMode} theme-style-${t}`},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,isSidebarOpenOfclientWidth(){document.documentElement.clientWidth<719&&(this.isSidebarOpen=!1)},toggleSidebar(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen,this.$emit("toggle-sidebar",this.isSidebarOpen)},_autoMode(){window.matchMedia("(prefers-color-scheme: dark)").matches?this.themeMode="dark":this.themeMode="light"},toggleThemeMode(t){"auto"===t?this._autoMode():this.themeMode=t,cn.set("mode",t)},onTouchStart(t){this.touchStart={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}},onTouchEnd(t){const e=t.changedTouches[0].clientX-this.touchStart.x,n=t.changedTouches[0].clientY-this.touchStart.y;Math.abs(e)>Math.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}},yn=(n(365),Object(o.a)(mn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?e("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),e("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),!1!==t.$themeConfig.sidebarHoverTriggerOpen?e("div",{staticClass:"sidebar-hover-trigger"}):t._e(),t._v(" "),e("Sidebar",{directives:[{name:"show",rawName:"v-show",value:t.showSidebar,expression:"showSidebar"}],attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([t.sidebarSlotTop?{key:"top",fn:function(){return[e("div",{staticClass:"sidebar-slot sidebar-slot-top",domProps:{innerHTML:t._s(t.sidebarSlotTop)}})]},proxy:!0}:null,t.sidebarSlotBottom?{key:"bottom",fn:function(){return[e("div",{staticClass:"sidebar-slot sidebar-slot-bottom",domProps:{innerHTML:t._s(t.sidebarSlotBottom)}})]},proxy:!0}:null],null,!0)}),t._v(" "),t.$page.frontmatter.home?e("Home"):t.$page.frontmatter.categoriesPage?e("CategoriesPage"):t.$page.frontmatter.tagsPage?e("TagsPage"):t.$page.frontmatter.archivesPage?e("ArchivesPage"):e("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([t.pageSlotTop?{key:"top",fn:function(){return[e("div",{staticClass:"page-slot page-slot-top",domProps:{innerHTML:t._s(t.pageSlotTop)}})]},proxy:!0}:null,t.pageSlotBottom?{key:"bottom",fn:function(){return[e("div",{staticClass:"page-slot page-slot-bottom",domProps:{innerHTML:t._s(t.pageSlotBottom)}})]},proxy:!0}:null],null,!0)}),t._v(" "),e("Footer"),t._v(" "),e("Buttons",{ref:"buttons",on:{"toggle-theme-mode":t.toggleThemeMode}}),t._v(" "),t.$themeConfig.bodyBgImg?e("BodyBgImg"):t._e(),t._v(" "),t.windowLB?e("div",{directives:[{name:"show",rawName:"v-show",value:t.showWindowLB,expression:"showWindowLB"}],staticClass:"custom-html-window custom-html-window-lb"},[e("div",{staticClass:"custom-wrapper"},[e("span",{staticClass:"close-but",on:{click:function(e){t.showWindowLB=!1}}},[t._v("×")]),t._v(" "),e("div",{domProps:{innerHTML:t._s(t.windowLB)}})])]):t._e(),t._v(" "),t.windowRB?e("div",{directives:[{name:"show",rawName:"v-show",value:t.showWindowRB,expression:"showWindowRB"}],staticClass:"custom-html-window custom-html-window-rb"},[e("div",{staticClass:"custom-wrapper"},[e("span",{staticClass:"close-but",on:{click:function(e){t.showWindowRB=!1}}},[t._v("×")]),t._v(" "),e("div",{domProps:{innerHTML:t._s(t.windowRB)}})])]):t._e()],1)}),[],!1,null,null,null));e.default=yn.exports}}]); \ No newline at end of file diff --git a/assets/js/20.3ad6f2c9.js b/assets/js/20.3ad6f2c9.js new file mode 100644 index 00000000..2920a928 --- /dev/null +++ b/assets/js/20.3ad6f2c9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{385:function(t,r,e){"use strict";e.r(r);var s=e(14),a=Object(s.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h2",{attrs:{id:"问题描述"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#问题描述"}},[t._v("#")]),t._v(" 问题描述")]),t._v(" "),r("p",[t._v("代理本地udp端口9231,公网访问代理端口无效,代理端口测试发送成功,但是本地服务没有收到,使用路由器的ddns功能也可以成功代理。")]),t._v(" "),r("h2",{attrs:{id:"解决方案"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#解决方案"}},[t._v("#")]),t._v(" 解决方案")]),t._v(" "),r("ul",[r("li",[t._v("防火墙开放端口的时候一定要指定udp协议")]),t._v(" "),r("li",[t._v("还有如果想收到回复需要配置两个响应参数")]),t._v(" "),r("li",[t._v("响应数量根据实际响应数量配置,可以配置的大一些,但是不能比实际小")]),t._v(" "),r("li",[t._v("超时时间根据实际响应时间配置,比如正常响应时间是10s,这里就可以配置15000毫秒等\n"),r("img",{attrs:{src:t.$withBase("/img/run-example/question_3_1.png")}})]),t._v(" "),r("li",[t._v("相关链接:"),r("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues/I83XOI",target:"_blank",rel:"noopener noreferrer"}},[t._v("1.9.0版本udp代理无效 · Issue #I83XOI · dromara/neutrino-proxy - Gitee.com"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("贡献者:gitee:眉黛如画")])])])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/21.e3560148.js b/assets/js/21.e3560148.js new file mode 100644 index 00000000..9672b421 --- /dev/null +++ b/assets/js/21.e3560148.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{386:function(t,e,a){"use strict";a.r(e);var s=a(14),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"问题描述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#问题描述"}},[t._v("#")]),t._v(" 问题描述")]),t._v(" "),e("p",[t._v("内网穿透 Vue项目出现Invalid Host header 的解决方案")]),t._v(" "),e("h2",{attrs:{id:"解决方案"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#解决方案"}},[t._v("#")]),t._v(" 解决方案")]),t._v(" "),e("p",[t._v("manifest.json中配置")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('"h5":{\n\t\t"devServer":{\n\t\t\t"disableHostCheck":true\n\t\t}\n},\n')])])]),e("ul",[e("li",[t._v("相关链接:"),e("a",{attrs:{href:"https://blog.csdn.net/weixin_41549915/article/details/96132925",target:"_blank",rel:"noopener noreferrer"}},[t._v("内网穿透 Vue项目出现Invalid Host header 的解决方案"),e("OutboundLink")],1)]),t._v(" "),e("li",[t._v("贡献者:wx:明天会更好")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/22.eb77dd26.js b/assets/js/22.eb77dd26.js new file mode 100644 index 00000000..e0cb22bf --- /dev/null +++ b/assets/js/22.eb77dd26.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{387:function(t,a,o){"use strict";o.r(a);var n=o(14),r=Object(n.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h2",{attrs:{id:"_1-1、报错-data-truncation-data-too-long-for-column-name-at-row-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-1、报错-data-truncation-data-too-long-for-column-name-at-row-1"}},[this._v("#")]),this._v(" 1.1、报错“Data truncation: Data too long for column 'name' at row 1”")]),this._v(" "),t("p",[this._v("配置文件中配置的mysql连接地址,去掉“characterEncoding=UTF-8”参数")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/23.6aa343b0.js b/assets/js/23.6aa343b0.js new file mode 100644 index 00000000..75954b90 --- /dev/null +++ b/assets/js/23.6aa343b0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{388:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("主题的配置在"),a("code",[t._v(".vuepress/config.ts")]),t._v("文件的"),a("code",[t._v("themeConfig")]),t._v("字段中,是在原有配置的基础上做的新增和修改,配置示例请查看:"),a("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/docs/.vuepress/config.ts",target:"_blank",rel:"noopener noreferrer"}},[t._v("config.ts"),a("OutboundLink")],1),t._v("。")]),t._v(" "),a("p",[t._v("更多官方配置,请查看"),a("a",{attrs:{href:"https://vuepress.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("vuepress文档"),a("OutboundLink")],1),t._v("。")]),t._v(" "),a("h2",{attrs:{id:"是否打开分类、标签、归档"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#是否打开分类、标签、归档"}},[t._v("#")]),t._v(" 是否打开分类、标签、归档")]),t._v(" "),a("h3",{attrs:{id:"category"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#category"}},[t._v("#")]),t._v(" category")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开分类功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成的front matter包含分类字段")]),t._v(" "),a("li",[t._v("页面中显示与分类相关的信息和模块")]),t._v(" "),a("li",[t._v("自动生成分类页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("h3",{attrs:{id:"tag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tag"}},[t._v("#")]),t._v(" tag")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开标签功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成的front matter包含标签字段")]),t._v(" "),a("li",[t._v("页面中显示与标签相关的信息和模块")]),t._v(" "),a("li",[t._v("自动生成标签页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("h3",{attrs:{id:"archive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#archive"}},[t._v("#")]),t._v(" archive")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开归档功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成归档页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("如果你仅仅是想使用这个主题来搭建知识库,并不想使用分类、标签、归档功能,就可以关闭它们。")])]),t._v(" "),a("h3",{attrs:{id:"使用分类页、标签页、归档页链接"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用分类页、标签页、归档页链接"}},[t._v("#")]),t._v(" 使用分类页、标签页、归档页链接")]),t._v(" "),a("p",[t._v("当你打开了分类、标签、归档功能,就可以在导航或其他地方添加分类页、标签页、归档页的链接:")]),t._v(" "),a("ul",[a("li",[t._v("分类页: "),a("code",[t._v("/categories/")])]),t._v(" "),a("li",[t._v("标签页: "),a("code",[t._v("/tags/")])]),t._v(" "),a("li",[t._v("归档页: "),a("code",[t._v("/archives/")])])]),t._v(" "),a("h2",{attrs:{id:"碎片化文章默认分类值"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#碎片化文章默认分类值"}},[t._v("#")]),t._v(" 碎片化文章默认分类值")]),t._v(" "),a("h3",{attrs:{id:"categorytext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#categorytext"}},[t._v("#")]),t._v(" categoryText")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("默认:'随笔'")])]),t._v(" "),a("p",[t._v("碎片化文章(_posts文件夹的文章)默认生成的分类值")]),t._v(" "),a("h2",{attrs:{id:"页面风格"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#页面风格"}},[t._v("#")]),t._v(" 页面风格")]),t._v(" "),a("h3",{attrs:{id:"pagestyle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagestyle"}},[t._v("#")]),t._v(" pageStyle "),a("Badge",{attrs:{text:"v1.12.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("可选值:'card' | 'line' (line在未设置bodyBgImg时才生效)")]),t._v(" "),a("li",[t._v("默认:'card'")])]),t._v(" "),a("p",[t._v("页面风格,"),a("code",[t._v("card")]),t._v("时背景显示灰色衬托出卡片样式,"),a("code",[t._v("line")]),t._v("时背景显示纯色,并且部分模块带线条边框(未设置bodyBgImg时才生效)")]),t._v(" "),a("h3",{attrs:{id:"defaultmode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaultmode"}},[t._v("#")]),t._v(" defaultMode "),a("Badge",{attrs:{text:"v1.12.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("可选值:'auto' | 'light' | 'dark' | 'read'")]),t._v(" "),a("li",[t._v("默认:'auto'")])]),t._v(" "),a("p",[t._v("默认外观模式,用户未在页面手动修改过模式时才生效,否则以用户设置的模式为准")]),t._v(" "),a("h2",{attrs:{id:"body背景大图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#body背景大图"}},[t._v("#")]),t._v(" body背景大图")]),t._v(" "),a("h3",{attrs:{id:"bodybgimg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimg"}},[t._v("#")]),t._v(" bodyBgImg")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")]),t._v(" | "),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("默认:undefined")])]),t._v(" "),a("p",[t._v("body背景大图,单张图片使用String,多张图片使用Array, 多张图片时每隔 秒换一张")]),t._v(" "),a("h3",{attrs:{id:"bodybgimgopacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimgopacity"}},[t._v("#")]),t._v(" bodyBgImgOpacity "),a("Badge",{attrs:{text:"v1.4.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:0.5")]),t._v(" "),a("li",[t._v("选值范围:0 ~ 1.0")])]),t._v(" "),a("p",[t._v("body背景图透明度")]),t._v(" "),a("h3",{attrs:{id:"bodybgimginterval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimginterval"}},[t._v("#")]),t._v(" bodyBgImgInterval "),a("Badge",{attrs:{text:"v1.12.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:15")]),t._v(" "),a("li",[t._v("单位:s")])]),t._v(" "),a("p",[t._v("body有多张背景大图时的切换间隔")]),t._v(" "),a("h2",{attrs:{id:"文章标题前的图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章标题前的图标"}},[t._v("#")]),t._v(" 文章标题前的图标")]),t._v(" "),a("h3",{attrs:{id:"titlebadge"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titlebadge"}},[t._v("#")]),t._v(" titleBadge")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开文章标题图标")]),t._v(" "),a("h3",{attrs:{id:"titlebadgeicons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titlebadgeicons"}},[t._v("#")]),t._v(" titleBadgeIcons")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("默认:内置图标")])]),t._v(" "),a("p",[t._v("文章标题图标的地址")]),t._v(" "),a("h2",{attrs:{id:"文章内容块的背景底纹"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章内容块的背景底纹"}},[t._v("#")]),t._v(" 文章内容块的背景底纹")]),t._v(" "),a("h3",{attrs:{id:"contentbgstyle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contentbgstyle"}},[t._v("#")]),t._v(" contentBgStyle "),a("Badge",{attrs:{text:"v1.4.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:undefined")]),t._v(" "),a("li",[t._v("选值:1 => 方格 | 2 => 横线 | 3 => 竖线 | 4 => 左斜线 | 5 => 右斜线 | 6 => 点状")])]),t._v(" "),a("p",[t._v("文章内容块的背景底纹")]),t._v(" "),a("h2",{attrs:{id:"侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#侧边栏"}},[t._v("#")]),t._v(" 侧边栏")]),t._v(" "),a("h3",{attrs:{id:"sidebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebar"}},[t._v("#")]),t._v(" sidebar")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("srting")]),t._v(" | "),a("code",[t._v("object")]),t._v(" | "),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("在默认主题原有的配置上新增两项参数:\n"),a("ul",[a("li",[a("code",[t._v("'structuring'")]),t._v(" 自动生成结构化侧边栏")]),t._v(" "),a("li",[a("code",[t._v("{ mode: 'structuring', collapsable: Boolean}")]),t._v(" 自动生成结构化侧边栏,并设置侧边栏是否可折叠,默认true")])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("如需构建结构化站点请把此配置设置为"),a("code",[t._v("structuring")]),t._v(" 或 "),a("code",[t._v("{ mode: 'structuring', collapsable: false}")])])]),t._v(" "),a("h3",{attrs:{id:"sidebaropen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebaropen"}},[t._v("#")]),t._v(" sidebarOpen")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("初始状态下是否打开侧边栏")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("在侧边栏关闭状态下,页面向下滚动时会隐藏顶部导航栏,让用户更专注于阅读。")])]),t._v(" "),a("h3",{attrs:{id:"对指定页面禁用侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#对指定页面禁用侧边栏"}},[t._v("#")]),t._v(" 对指定页面禁用侧边栏")]),t._v(" "),a("p",[t._v("你可以通过 front matter 来禁用指定页面的侧边栏:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h3",{attrs:{id:"碎片化文章的侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#碎片化文章的侧边栏"}},[t._v("#")]),t._v(" 碎片化文章的侧边栏")]),t._v(" "),a("p",[t._v("在_posts文件夹的文章会自动在 front matter 添加 "),a("code",[t._v("sidebar: auto")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" auto\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"最近更新栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#最近更新栏"}},[t._v("#")]),t._v(" 最近更新栏")]),t._v(" "),a("h3",{attrs:{id:"updatebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updatebar"}},[t._v("#")]),t._v(" updateBar")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("object")])]),t._v(" "),a("li",[t._v("默认:"),a("code",[t._v("{showToArticle: true, moreArticle: '/archives/'}")]),t._v(" "),a("ul",[a("li",[t._v("showToArticle 显示到文章页底部,默认true")]),t._v(" "),a("li",[t._v("moreArticle “更多文章”跳转的页面,默认'/archives/'")])])])]),t._v(" "),a("p",[t._v("最近更新栏,显示于文章页底部和简约版首页文章列表")]),t._v(" "),a("h3",{attrs:{id:"非文章页的设置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#非文章页的设置"}},[t._v("#")]),t._v(" 非文章页的设置")]),t._v(" "),a("p",[t._v("对于非文章页,如目录页、关于、友情链接等自定义页面,最好在front matter设置"),a("code",[t._v("article: false")]),t._v(",设置之后这个页面将被认定为非文章页,不显示面包屑和作者、时间,不显示最近更新栏,不会参与到最近更新文章的数据计算中。")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"右侧文章大纲栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#右侧文章大纲栏"}},[t._v("#")]),t._v(" 右侧文章大纲栏")]),t._v(" "),a("h3",{attrs:{id:"rightmenubar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rightmenubar"}},[t._v("#")]),t._v(" rightMenuBar "),a("Badge",{attrs:{text:"v1.6.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否显示右侧文章大纲栏。设置为"),a("code",[t._v("false")]),t._v("或屏宽小于"),a("code",[t._v("1300px")]),t._v("时,文章大纲将与左侧侧边栏混合在一起。\n(注:在屏宽小于"),a("code",[t._v("1300px")]),t._v("下无论如何都不显示右侧文章大纲栏。)")]),t._v(" "),a("h2",{attrs:{id:"快捷翻页按钮"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#快捷翻页按钮"}},[t._v("#")]),t._v(" 快捷翻页按钮")]),t._v(" "),a("h3",{attrs:{id:"pagebutton"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagebutton"}},[t._v("#")]),t._v(" pageButton "),a("Badge",{attrs:{text:"v1.4.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否显示快捷翻页按钮 (此按钮是文章页左右两边的箭头按钮,小屏中不会显示。)")]),t._v(" "),a("h2",{attrs:{id:"文章作者信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章作者信息"}},[t._v("#")]),t._v(" 文章作者信息")]),t._v(" "),a("h3",{attrs:{id:"author"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[t._v("#")]),t._v(" author")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")]),t._v(" | "),a("code",[t._v("{name: String, link: String}")])]),t._v(" "),a("li",[t._v("默认:undefined")]),t._v(" "),a("li",[t._v("属性:\n"),a("ul",[a("li",[t._v("name 作者名称")]),t._v(" "),a("li",[t._v("link 作者链接")])])])]),t._v(" "),a("p",[t._v("文章默认的作者信息")]),t._v(" "),a("h3",{attrs:{id:"指定的文章作者信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#指定的文章作者信息"}},[t._v("#")]),t._v(" 指定的文章作者信息")]),t._v(" "),a("p",[t._v("你也可以在指定的文章front matter设置作者信息,优先级比默认作者信息高,示例:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者名\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxx.com\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n 或\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者名\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"博主信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#博主信息"}},[t._v("#")]),t._v(" 博主信息")]),t._v(" "),a("h3",{attrs:{id:"blogger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blogger"}},[t._v("#")]),t._v(" blogger")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{avatar: String, name: String, slogan: String}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("avatar 头像,必需")]),t._v(" "),a("li",[t._v("name 博主名称,必需")]),t._v(" "),a("li",[t._v("slogan 标语,可选")])])])]),t._v(" "),a("p",[t._v("博主信息显示于首页博主信息栏")]),t._v(" "),a("h2",{attrs:{id:"社交图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社交图标"}},[t._v("#")]),t._v(" 社交图标")]),t._v(" "),a("h3",{attrs:{id:"social"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#social"}},[t._v("#")]),t._v(" social")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{iconfontCssFile: String, icons: [{iconClass: String, title: String, link: String}]}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("iconfontCssFile 可选,阿里图标库(或其他)的在线css字体图标文件地址,对于主题没有的图标可自由添加")]),t._v(" "),a("li",[t._v("icons 图标列表,数量自由\n"),a("ul",[a("li",[t._v("iconClass 图标的Class名称")]),t._v(" "),a("li",[t._v("title 图标的title")]),t._v(" "),a("li",[t._v("link 图标的跳转链接")])])])])])]),t._v(" "),a("p",[t._v("社交图标显示于博主信息栏和页脚栏")]),t._v(" "),a("h3",{attrs:{id:"主题内置的社交图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#主题内置的社交图标"}},[t._v("#")]),t._v(" 主题内置的社交图标 "),a("Badge",{attrs:{text:"v1.2.2+, 部分v1.7.2+"}})],1),t._v(" "),a("table",{staticClass:"icons-table"},[a("tbody",[a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-weixin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("微信")]),t._v(" "),a("p",[t._v("icon-weixin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-QQ"}),t._v(" "),a("p",{staticClass:"name"},[t._v("QQ")]),t._v(" "),a("p",[t._v("icon-QQ")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-youjian"}),t._v(" "),a("p",{staticClass:"name"},[t._v("邮件")]),t._v(" "),a("p",[t._v("icon-youjian")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-npm"}),t._v(" "),a("p",{staticClass:"name"},[t._v("npm")]),t._v(" "),a("p",[t._v("icon-npm")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-github"}),t._v(" "),a("p",{staticClass:"name"},[t._v("github")]),t._v(" "),a("p",[t._v("icon-github")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-gitee"}),t._v(" "),a("p",{staticClass:"name"},[t._v("gitee")]),t._v(" "),a("p",[t._v("icon-gitee")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-weibo"}),t._v(" "),a("p",{staticClass:"name"},[t._v("微博")]),t._v(" "),a("p",[t._v("icon-weibo")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-zhihu"}),t._v(" "),a("p",{staticClass:"name"},[t._v("知乎")]),t._v(" "),a("p",[t._v("icon-zhihu")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-yuque"}),t._v(" "),a("p",{staticClass:"name"},[t._v("语雀")]),t._v(" "),a("p",[t._v("icon-yuque")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-douban"}),t._v(" "),a("p",{staticClass:"name"},[t._v("豆瓣")]),t._v(" "),a("p",[t._v("icon-douban")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-juejin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("掘金")]),t._v(" "),a("p",[t._v("icon-juejin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-jianshu"}),t._v(" "),a("p",{staticClass:"name"},[t._v("简书")]),t._v(" "),a("p",[t._v("icon-jianshu")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-sf"}),t._v(" "),a("p",{staticClass:"name"},[t._v("思否")]),t._v(" "),a("p",[t._v("icon-sf")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-bokeyuan"}),t._v(" "),a("p",{staticClass:"name"},[t._v("博客园")]),t._v(" "),a("p",[t._v("icon-bokeyuan")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-csdn"}),t._v(" "),a("p",{staticClass:"name"},[t._v("CSDN")]),t._v(" "),a("p",[t._v("icon-csdn")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-v2ex"}),t._v(" "),a("p",{staticClass:"name"},[t._v("v2ex")]),t._v(" "),a("p",[t._v("icon-v2ex")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-douyin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("抖音")]),t._v(" "),a("p",[t._v("icon-douyin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-bilibili"}),t._v(" "),a("p",{staticClass:"name"},[t._v("哔哩哔哩")]),t._v(" "),a("p",[t._v("icon-bilibili")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-youtube"}),t._v(" "),a("p",{staticClass:"name"},[t._v("youtube")]),t._v(" "),a("p",[t._v("icon-youtube")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-facebook"}),t._v(" "),a("p",{staticClass:"name"},[t._v("facebook")]),t._v(" "),a("p",[t._v("icon-facebook")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-twitter"}),t._v(" "),a("p",{staticClass:"name"},[t._v("twitter")]),t._v(" "),a("p",[t._v("icon-twitter")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-telegram"}),t._v(" "),a("p",{staticClass:"name"},[t._v("telegram")]),t._v(" "),a("p",[t._v("icon-telegram")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-rss"}),t._v(" "),a("p",{staticClass:"name"},[t._v("RSS")]),t._v(" "),a("p",[t._v("icon-rss")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-erji"}),t._v(" "),a("p",{staticClass:"name"},[t._v("耳机")]),t._v(" "),a("p",[t._v("icon-erji")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-mao"}),t._v(" "),a("p",{staticClass:"name"},[t._v("猫咪")]),t._v(" "),a("p",[t._v("icon-mao")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-shuben"}),t._v(" "),a("p",{staticClass:"name"},[t._v("书本")]),t._v(" "),a("p",[t._v("icon-shuben")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-xiangce"}),t._v(" "),a("p",{staticClass:"name"},[t._v("相册")]),t._v(" "),a("p",[t._v("icon-xiangce")])])])])]),t._v(" "),a("style",[t._v("\n .icons-table{\n opacity: 0.8;\n }\n .icons-table td{\n padding: 1em;\n }\n .icons-table span::before{\n font-size: 26px;\n }\n .icons-table p.name{\n margin-top: 18px;\n font-size: 14px;\n }\n .icons-table p{\n margin: 10px 0 0 0;\n font-size: 15px;\n line-height: 15px;\n }\n")]),t._v(" "),a("h2",{attrs:{id:"扩展自动生成front-matter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#扩展自动生成front-matter"}},[t._v("#")]),t._v(" 扩展自动生成front matter")]),t._v(" "),a("h3",{attrs:{id:"extendfrontmatter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extendfrontmatter"}},[t._v("#")]),t._v(" extendFrontmatter "),a("Badge",{attrs:{text:"v1.11.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("Object")])]),t._v(" "),a("li",[t._v("默认:undefined")])]),t._v(" "),a("p",[t._v("当"),a("code",[t._v(".md")]),t._v("文件的front matter不存在extendFrontmatter内相应的字段时,将在运行开发服务"),a("code",[t._v("dev")]),t._v("或打包"),a("code",[t._v("build")]),t._v("时自动添加,但不会覆盖已有的数据。")]),t._v(" "),a("p",[a("strong",[t._v("例子:")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("extendFrontmatter")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'xugaoyi'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://github.com/xugaoyi'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("''")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("生成到front matter:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xugaoyi\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//github.com/xugaoyi\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"页脚版权栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#页脚版权栏"}},[t._v("#")]),t._v(" 页脚版权栏")]),t._v(" "),a("h3",{attrs:{id:"footer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#footer"}},[t._v("#")]),t._v(" footer")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{createYear: Number | String, copyrightInfo: String}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("createYear 博客创建的年份")]),t._v(" "),a("li",[t._v("copyrightInfo 可以配置包括版权信息、备案信息在内的所有信息,支持a标签")])])])]),t._v(" "),a("p",[t._v("页脚版权栏信息,原默认主题在首页的front matter中的"),a("code",[t._v("footer")]),t._v("配置项已弃用。")]),t._v(" "),a("h2",{attrs:{id:"自定义html模块"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义html模块"}},[t._v("#")]),t._v(" 自定义html模块")]),t._v(" "),a("blockquote",[a("p",[t._v("可用于插入广告模块")])]),t._v(" "),a("h3",{attrs:{id:"htmlmodules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#htmlmodules"}},[t._v("#")]),t._v(" htmlModules "),a("Badge",{attrs:{text:"v1.7.0 +"}})],1),t._v(" "),a("ul",[a("li",[a("p",[t._v("类型:"),a("code",[t._v("object")])])]),t._v(" "),a("li",[a("p",[t._v("默认:undefined")])]),t._v(" "),a("li",[a("p",[t._v("属性:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("homeSidebarB")]),t._v(" 首页侧边栏底部")]),t._v(" "),a("li",[a("code",[t._v("sidebarT")]),t._v(" 所有左侧边栏顶部")]),t._v(" "),a("li",[a("code",[t._v("sidebarB")]),t._v(" 所有左侧边栏底部")]),t._v(" "),a("li",[a("code",[t._v("pageT")]),t._v(" 页面顶部")]),t._v(" "),a("li",[a("code",[t._v("pageB")]),t._v(" 页面底部")]),t._v(" "),a("li",[a("code",[t._v("pageTshowMode")]),t._v(" 页面顶部的显示方式\n"),a("ul",[a("li",[a("code",[t._v("未配置")]),t._v(" 默认所有页面显示")]),t._v(" "),a("li",[a("code",[t._v("'article'")]),t._v(" 仅文章页①显示")]),t._v(" "),a("li",[a("code",[t._v("'custom'")]),t._v(" 仅自定义页①显示")])])]),t._v(" "),a("li",[a("code",[t._v("pageBshowMode")]),t._v(" 页面底部的显示方式\n"),a("ul",[a("li",[a("code",[t._v("未配置")]),t._v(" 默认全局显示")]),t._v(" "),a("li",[a("code",[t._v("'article'")]),t._v(" 仅文章页①显示")]),t._v(" "),a("li",[a("code",[t._v("'custom'")]),t._v(" 仅自定义页①显示")])])]),t._v(" "),a("li",[a("code",[t._v("windowLB")]),t._v(" 全局窗口左下角②")]),t._v(" "),a("li",[a("code",[t._v("windowRB")]),t._v(" 全局窗口右下角②")])]),t._v(" "),a("br"),t._v(" "),a("blockquote",[a("p",[t._v("①注:在.md文件front matter配置"),a("code",[t._v("article: false")]),t._v("的页面是自定义页,未配置的默认是文章页(首页除外)。")]),t._v(" "),a("p",[t._v("②注:windowLB 和 windowRB:1.展示区块最大宽高200px*400px。2.请给自定义元素定一个不超过200px*400px的宽高。3.在屏幕宽度小于960px时无论如何都不会显示。")])])]),t._v(" "),a("li",[a("p",[t._v("格式:")])])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("htmlModules")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("homeSidebarB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("sidebarT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("sidebarB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageTshowMode")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'article'")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'custom'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageBshowMode")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'article'")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'custom'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("windowLB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("windowRB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/24.7e68c2e7.js b/assets/js/24.7e68c2e7.js new file mode 100644 index 00000000..15e8df95 --- /dev/null +++ b/assets/js/24.7e68c2e7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{389:function(t,e,s){"use strict";s.r(e);var a=s(14),n=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("p",[t._v("在"),e("code",[t._v("docs")]),t._v("目录下的"),e("code",[t._v("index.md")]),t._v("或"),e("code",[t._v("README.md")]),t._v("的 front matter 指定 "),e("code",[t._v("home: true")]),t._v(",就会为你的站点生成一个首页,示例:")]),t._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("home")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# heroImage: /img/web.png")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("heroText")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Evan's blog\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tagline")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Web前端技术博客,积跬步以至千里,致敬每个爱学习的你。\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# actionText: 立刻进入 →")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# actionLink: /web/")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# bannerBg: auto # auto => 网格纹背景(有bodyBgImg时无背景),默认 | none => 无 | '大图地址' | background: 自定义背景样式 提示:如发现文本颜色不适应你的背景时可以到palette.styl修改$bannerTextColor变量")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("features")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选的")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 前端\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" JavaScript、ES6、Vue框架等前端技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /web/ "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/web.png "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 页面\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" html(5)/css(3),前端页面相关技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /ui/\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/ui.png\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 技术文档、教程、技巧、总结等文章\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /technology/\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/other.png\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 文章列表显示方式: detailed 默认,显示详细版文章列表(包括作者、分类、标签、摘要、分页等)| simple => 显示简约版文章列表(仅标题和日期)| none 不显示文章列表")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# postList: detailed")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# simplePostListLength: 10 # 简约版文章列表显示的文章数量,默认10。(仅在postList设置为simple时生效)")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# hideRightBar: true # 是否隐藏右侧边栏 (v1.11.2+)")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),e("p",[t._v("一些字段还是沿用"),e("a",{attrs:{href:"https://vuepress.vuejs.org/zh/theme/default-theme-config.html#%E9%A6%96%E9%A1%B5",target:"_blank",rel:"noopener noreferrer"}},[t._v("默认主题"),e("OutboundLink")],1),t._v("的,这里只对修改的地方做一个补充。")]),t._v(" "),e("h3",{attrs:{id:"bannerbg"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bannerbg"}},[t._v("#")]),t._v(" bannerBg")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("string")])]),t._v(" "),e("li",[t._v("可选参数:\n"),e("ul",[e("li",[e("code",[t._v("auto")]),t._v(" 自动背景,一般会显示网格纹背景,如果在"),e("code",[t._v("config.js")]),t._v("设置了"),e("code",[t._v("bodyBgImg")]),t._v("时则无背景")]),t._v(" "),e("li",[e("code",[t._v("none")]),t._v(" 无背景")]),t._v(" "),e("li",[e("code",[t._v("<大图地址>")]),t._v(",如"),e("code",[t._v("/img/bg.jpeg")])]),t._v(" "),e("li",[e("code",[t._v("background: <自定义背景样式>")]),t._v(",如"),e("code",[t._v("background: blue")])])])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("auto")])])]),t._v(" "),e("h3",{attrs:{id:"features"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[t._v("#")]),t._v(" features")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("{title: string, details: string, link?: string, imgUrl?: string}[]")])])]),t._v(" "),e("p",[t._v("features是在banner栏显示的特性描述,主题添加了图片的展示和点击跳转的链接")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("features[index].link")]),t._v(" 当前feature跳转的链接,可选")]),t._v(" "),e("li",[e("strong",[t._v("features[index].imgUrl")]),t._v(" 当前feature的图片地址,可选")])]),t._v(" "),e("h3",{attrs:{id:"postlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#postlist"}},[t._v("#")]),t._v(" postList")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("'detailed' | 'simple' | 'none'")])]),t._v(" "),e("li",[t._v("可选参数:\n"),e("ul",[e("li",[e("code",[t._v("detailed")]),t._v(" 显示详细版文章列表(包括标题、日期、作者、分类、标签、摘要、分页等)")]),t._v(" "),e("li",[e("code",[t._v("simple")]),t._v(" 显示简约版文章列表(仅标题和日期)")]),t._v(" "),e("li",[e("code",[t._v("none")]),t._v(" 不显示文章列表")])])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("detailed")])])]),t._v(" "),e("p",[t._v("首页内容中的文章列表显示方式")]),t._v(" "),e("h3",{attrs:{id:"simplepostlistlength"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplepostlistlength"}},[t._v("#")]),t._v(" simplePostListLength "),e("Badge",{attrs:{text:"v1.5.1 +"}})],1),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("number")])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("10")])])]),t._v(" "),e("p",[t._v("简约版文章列表显示的文章数量,默认"),e("code",[t._v("10")]),t._v("。(仅在"),e("code",[t._v("postList")]),t._v("设置为"),e("code",[t._v("simple")]),t._v("时生效)")]),t._v(" "),e("h3",{attrs:{id:"hiderightbar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hiderightbar"}},[t._v("#")]),t._v(" hideRightBar "),e("Badge",{attrs:{text:"v1.11.2 +"}})],1),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("boolean")])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("false")])])]),t._v(" "),e("p",[t._v("是否隐藏右侧边栏")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),e("p",[t._v("原默认主题首页的footer字段已改到"),e("code",[t._v("config.js")]),t._v("文件里设置")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/25.de1c1c00.js b/assets/js/25.de1c1c00.js new file mode 100644 index 00000000..51c0c650 --- /dev/null +++ b/assets/js/25.de1c1c00.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{390:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("一个比较完整的front matter示例:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 标题\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token datetime number"}},[t._v("2020-02-21 14:40:19")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("permalink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /pages/a1bc87\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("categories")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 分类1\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 分类2\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tags")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 标签1\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 原创 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# v1.9.0+")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("comment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("editLink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxx.com\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sticky")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"配置项"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置项"}},[t._v("#")]),t._v(" 配置项")]),t._v(" "),a("p",[t._v("自动生成的front matter字段包括title、date、permalink、categories、tags,这里就不再重复赘述,参考:"),a("RouterLink",{attrs:{to:"/pages/088c16/"}},[t._v("自动生成front matter")])],1),t._v(" "),a("h3",{attrs:{id:"titletag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titletag"}},[t._v("#")]),t._v(" titleTag "),a("Badge",{attrs:{text:"v1.9.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("用于给标题添加 "),a("code",[t._v("原创")]),t._v("、"),a("code",[t._v("转载")]),t._v(" 、"),a("code",[t._v("优质")]),t._v("、"),a("code",[t._v("推荐")]),t._v(" 等自定义标记。")])]),t._v(" "),a("p",[t._v("添加了标题标记的文章,在文章页和文章列表、最近更新栏、归档页的文章标题都会显示此标记。")]),t._v(" "),a("h3",{attrs:{id:"sidebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebar"}},[t._v("#")]),t._v(" sidebar")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示侧边栏")]),t._v(" "),a("li",[a("code",[t._v("auto")]),t._v(" 显示自动侧边栏(只包含本文标题和子标题)")])]),t._v(" "),a("h3",{attrs:{id:"article"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#article"}},[t._v("#")]),t._v(" article")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 判定当前页面为非文章页")])]),t._v(" "),a("p",[t._v("对于非文章页,如目录页、关于、友情链接等自定义页面,需要设置此项。设置之后这个页面将被认定为非文章页,不显示面包屑和作者、时间,不显示最近更新栏,不会参与到最近更新文章的数据计算中。")]),t._v(" "),a("h3",{attrs:{id:"comment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#comment"}},[t._v("#")]),t._v(" comment")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示评论区,这是"),a("a",{attrs:{href:"https://github.com/dongyuanxin/vuepress-plugin-comment",target:"_blank",rel:"noopener noreferrer"}},[t._v("评论插件"),a("OutboundLink")],1),t._v("的一个配置")])]),t._v(" "),a("h3",{attrs:{id:"editlink"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#editlink"}},[t._v("#")]),t._v(" editLink")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示编辑链接")])]),t._v(" "),a("h3",{attrs:{id:"author"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[t._v("#")]),t._v(" author")]),t._v(" "),a("ul",[a("li",[t._v("author.name 作者名称")]),t._v(" "),a("li",[t._v("author.link 作者链接")])]),t._v(" "),a("p",[t._v("指定当前页面的作者信息,如没有作者链接时可以这样:"),a("code",[t._v("author: 作者名称")])]),t._v(" "),a("h3",{attrs:{id:"sticky-置顶"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sticky-置顶"}},[t._v("#")]),t._v(" sticky (置顶)")]),t._v(" "),a("ul",[a("li",[t._v("类型: "),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("排序:允许有多个置顶文章,按照 "),a("code",[t._v("1, 2, 3, ...")]),t._v(" 来降低置顶文章的排列优先级")])]),t._v(" "),a("p",[t._v("文章置顶,设置了此项将在首页详细版文章列表中处于置顶位置。")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/26.a9272eda.js b/assets/js/26.a9272eda.js new file mode 100644 index 00000000..3a69ebb1 --- /dev/null +++ b/assets/js/26.a9272eda.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{391:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"目录页说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#目录页说明"}},[t._v("#")]),t._v(" 目录页说明")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),a("p",[t._v("目录页数据需要依赖于结构化的侧边栏数据,就是说你需要在"),a("code",[t._v("config.js")]),t._v("配置 "),a("code",[t._v("sidebar: 'structuring'")]),t._v(" 或 "),a("code",[t._v("sidebar: { mode: 'structuring', collapsable: false}")]),t._v(" 才能实现目录页数据的获取。")])]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("目录页文件("),a("code",[t._v(".md")]),t._v("文件)可以放置在"),a("code",[t._v("二级目录")]),t._v("、"),a("code",[t._v("三级目录")]),t._v("和"),a("code",[t._v("四级目录")]),t._v("。("),a("RouterLink",{attrs:{to:"/pages/33d574/#级别说明"}},[t._v("级别说明")]),t._v(")")],1),t._v(" "),a("li",[t._v("如果你不想在侧边栏显示目录页,你可以在"),a("code",[t._v("一级目录")]),t._v("中单独创建一个文件夹放置你的目录页("),a("code",[t._v(".md")]),t._v("文件),并在front matter中设置"),a("code",[t._v("sidebar: false")]),t._v("。")]),t._v(" "),a("li",[t._v("如果你想让目录页和其他页面一起出现在侧边栏,你可以和其他页面共同放置在相应的文件夹。(不要设置"),a("code",[t._v("sidebar: false")]),t._v(")")]),t._v(" "),a("li",[t._v("参照下面的示例配置好front matter,然后就可以在导航栏或首页添加目录页链接了。")])])]),t._v(" "),a("p",[a("strong",[t._v("示例")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("pageComponent")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用页面组件")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Catalogue "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 组件名:Catalogue => 目录页组件")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 组件所需数据")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("path")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 01.学习笔记/01.前端 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 设置为`docs/`下面的某个文件夹相对路径,如‘01.学习笔记/01.前端’ 或 ’01.学习笔记‘ (有序号的要带序号)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/web.png "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 目录页内的图片")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("description")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" JavaScript、ES6、Vue框架等前端技术 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 目录描述(可加入a标签)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 前端 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 页面标题")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token datetime number"}},[t._v("2020-01-12 11:51:53")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 创建日期")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("permalink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /note/javascript "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 永久链接")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示侧边栏")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不是文章页 (不显示面包屑栏、最近更新栏等)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("comment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示评论栏")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("editLink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示编辑按钮")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("配置好目录页之后,点击文章页的面包屑将会跳转到目录页。")])]),t._v(" "),a("h2",{attrs:{id:"配置项"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置项"}},[t._v("#")]),t._v(" 配置项")]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-name"}},[t._v("#")]),t._v(" pageComponent.name")]),t._v(" "),a("ul",[a("li",[t._v("组件名,必需")]),t._v(" "),a("li",[t._v("使用目录页时 "),a("strong",[t._v("必须")]),t._v(" 设置为"),a("code",[t._v("Catalogue")])])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data"}},[t._v("#")]),t._v(" pageComponent.data")]),t._v(" "),a("ul",[a("li",[t._v("组件所需数据,必需")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-path"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-path"}},[t._v("#")]),t._v(" pageComponent.data.path")]),t._v(" "),a("ul",[a("li",[t._v("要为其生成目录页的文件夹的相对路径,必需")]),t._v(" "),a("li",[t._v("必须是在"),a("code",[t._v("docs")]),t._v("目录底下的文件夹相对路径")]),t._v(" "),a("li",[t._v("示例:"),a("code",[t._v("01.学习笔记")]),t._v("或"),a("code",[t._v("01.学习笔记/01.前端")]),t._v("(有序号的要带序号)")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),a("p",[t._v("在"),a("code",[t._v("v1.8.2")]),t._v("版本之前,没有"),a("code",[t._v("path")]),t._v("属性,使用"),a("code",[t._v("key")]),t._v("代替。但"),a("code",[t._v("key")]),t._v("只支持指定"),a("code",[t._v("一级目录")]),t._v("的文件夹名称。")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-imgurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-imgurl"}},[t._v("#")]),t._v(" pageComponent.data.imgUrl")]),t._v(" "),a("ul",[a("li",[t._v("目录页内的图片,可选。(v1.9.4之前必填)")]),t._v(" "),a("li",[t._v("图片尺寸在页面中显示为80px*80px")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-description"}},[t._v("#")]),t._v(" pageComponent.data.description")]),t._v(" "),a("ul",[a("li",[t._v("目录描述,必需")]),t._v(" "),a("li",[t._v("可加a标签(如需加入a标签时,标签内部的引号请使用单引号)")])]),t._v(" "),a("h2",{attrs:{id:"如何在导航栏中添加目录页链接"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何在导航栏中添加目录页链接"}},[t._v("#")]),t._v(" 如何在导航栏中添加目录页链接")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// config.js")]),t._v("\nmodule"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("themeConfig")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("nav")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 没有二级导航时可以直接添加")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'目录页'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/web/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 有二级导航时")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'页面'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/ui/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//目录页, vdoing主题新增的配置项,有二级导航时,可以点击一级导航跳到目录页")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HTML'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/pages/11/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'CSS'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/pages/22/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("参考:"),a("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/docs/.vuepress/config/nav.js",target:"_blank",rel:"noopener noreferrer"}},[t._v(".vuepress/config/nav.js"),a("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/27.d61af734.js b/assets/js/27.d61af734.js new file mode 100644 index 00000000..8400e644 --- /dev/null +++ b/assets/js/27.d61af734.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{392:function(t,s,n){"use strict";n.r(s);var a=n(14),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",[t._v("文章摘要会显示于首页的详细版文章列表中,在编写文章时("),s("code",[t._v(".md")]),t._v("文件中)在合适的位置添加一个"),s("code",[t._v("\x3c!-- more --\x3e")]),t._v("注释。注释前面的内容将会暴露在摘要中。")]),t._v(" "),s("p",[t._v("示例:")]),t._v(" "),s("div",{staticClass:"language-md extra-class"},[s("pre",{pre:!0,attrs:{class:"language-md"}},[s("code",[s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("#")]),t._v(" 如何根据系统主题自动响应CSS深色模式")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token url"}},[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("["),s("span",{pre:!0,attrs:{class:"token content"}},[t._v("Dark")]),t._v("]("),s("span",{pre:!0,attrs:{class:"token url"}},[t._v("https://fastly.jsdelivr.net/gh/xugaoyi/image_store/blog/20200427163531.jpg")]),t._v(")")]),t._v("\n\n很多人喜欢选择APP或网站中的深色模式,也许他们更喜欢这样的外观,或者他们想让自己的眼睛免受疲劳。这篇文章将告诉你如何在网站中实现一个自动的CSS深色模式,根据访客的系统主题来自动响应。\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("\x3c!-- more --\x3e")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("##")]),t._v(" CSS 深色模式 (Dark Mode)")]),t._v("\n\n...\n\n")])])]),s("p",[t._v("如示例的内容,在"),s("code",[t._v("\x3c!-- more --\x3e")]),t._v("注释前面的除了标题之外所有内容将显示到摘要中。摘要在文章列表的显示效果如下:\n")]),s("p",{attrs:{align:"center"}},[s("img",{attrs:{src:"https://fastly.jsdelivr.net/gh/xugaoyi/image_store/blog/20200513165502.png",width:"600"}})]),s("p"),t._v(" "),s("p",[t._v("值得注意的是摘要的内容也是文章内容的一部分,会显示在文章详情页中。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/28.7dfe2be6.js b/assets/js/28.7dfe2be6.js new file mode 100644 index 00000000..5e452149 --- /dev/null +++ b/assets/js/28.7dfe2be6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{393:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"主题样式变量"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#主题样式变量"}},[t._v("#")]),t._v(" 主题样式变量")]),t._v(" "),s("p",[t._v("下面是vdoing主题使用的css变量,你可以在"),s("code",[t._v(".vuepress/styles/palette.styl")]),t._v("修改这些变量覆盖它们:")]),t._v(" "),s("div",{staticClass:"language-stylus extra-class"},[s("pre",{pre:!0,attrs:{class:"language-stylus"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//***vdoing主题-CSS变量***//")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 颜色")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$bannerTextColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 首页banner区(博客标题区)的文本颜色")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$accentColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#11A8CD")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$activeColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#ff5722")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$arrowBgColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#ccc")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 布局")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$navbarHeight")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3.6")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$sidebarWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$contentWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("860")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$homePageWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1100")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$rightMenuWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("230")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 右侧菜单")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$lineNumbersWrapperWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.5")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 浅色模式")]),t._v("\n.theme-mode-light")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#f4f4f4")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".9")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#004050")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".15")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块浅色主题")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#f6f6f6")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#525252")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeLight")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块深色主题")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// --codeBg: #252526")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// --codeColor: #fff")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// codeThemeDark()")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 深色模式")]),t._v("\n.theme-mode-dark")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("39")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("39")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("43")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("140")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("140")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("150")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#2C2C3A")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#252526")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeDark")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 阅读模式")]),t._v("\n.theme-mode-read")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("240")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("240")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("208")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".9")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#004050")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".15")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#282c34")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeDark")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n")])])]),s("p",[t._v("上面的变量值可能不是最新的,最新的变量值可查看:"),s("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/theme-vdoing/styles/palette.styl",target:"_blank",rel:"noopener noreferrer"}},[t._v("palette.styl"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"样式修改与适配"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#样式修改与适配"}},[t._v("#")]),t._v(" 样式修改与适配")]),t._v(" "),s("p",[t._v("当你想修改主题某个地方的样式时,或者你在给博客添加了一些新的模块或插件,发现样式和主题的样式不协调时,都可以在"),s("code",[t._v(".vuepress/styles/index.styl")]),t._v("\n添加css样式来做修改。\n需要注意的是,你在自己写的css样式中,请尽量使用主题提供的变量来进行适配。")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("小技巧")]),t._v(":当你发现自己写的css样式优先级没有原来的样式高时,可以在样式后面添加"),s("code",[t._v("!improtant")]),t._v("后缀,使你的样式优先级是最高的。")])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/29.ec35ef30.js b/assets/js/29.ec35ef30.js new file mode 100644 index 00000000..b46e4882 --- /dev/null +++ b/assets/js/29.ec35ef30.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{394:function(e,s,r){"use strict";r.r(s);var t=r(14),u=Object(t.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("p",[e._v("评论栏推荐使用vuepress插件的方式来导入,这里推荐一些vuepress的评论插件,使用方法查阅相应的文档。")]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-comment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-comment"}},[e._v("#")]),e._v(" vuepress-plugin-comment")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/dongyuanxin/vuepress-plugin-comment",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-comment"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-vssue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-vssue"}},[e._v("#")]),e._v(" vuepress-plugin-vssue")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://vssue.js.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-vssue"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-vssue-global"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-vssue-global"}},[e._v("#")]),e._v(" vuepress-plugin-vssue-global")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/u2sb/vuepress-plugin-vssue-global",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-vssue-global"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"twikoo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#twikoo"}},[e._v("#")]),e._v(" Twikoo")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/imaegoo/twikoo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twikoo"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);s.default=u.exports}}]); \ No newline at end of file diff --git a/assets/js/3.31c9497d.js b/assets/js/3.31c9497d.js new file mode 100644 index 00000000..c11f0849 --- /dev/null +++ b/assets/js/3.31c9497d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{321:function(t,e,n){},369:function(t,e,n){"use strict";n(321)},408:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:(t,{props:e,slots:n})=>t("span",{class:["badge",e.type],style:{verticalAlign:e.vertical}},e.text||n().default)},a=(n(369),n(14)),p=Object(a.a)(i,void 0,void 0,!1,null,"d5affa18",null);e.default=p.exports}}]); \ No newline at end of file diff --git a/assets/js/30.43ea93fb.js b/assets/js/30.43ea93fb.js new file mode 100644 index 00000000..5ee9688d --- /dev/null +++ b/assets/js/30.43ea93fb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{396:function(r,e,t){"use strict";t.r(e);var _=t(14),v=Object(_.a)({},(function(){var r=this,e=r._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[e("h1",{attrs:{id:"🎋代码分支说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🎋代码分支说明"}},[r._v("#")]),r._v(" 🎋代码分支说明")]),r._v(" "),e("ul",[e("li",[r._v("dev:常规开发分支,日常的开发、Bug修复、提交PR都在此分支")]),r._v(" "),e("li",[r._v("feature/xxx:特征分支,一些试验性开发、提交PR都在此分支,xxx可自行取一个有意义的名称")]),r._v(" "),e("li",[r._v("release/xxx:发行版分支,作为阶段性成果、重大更新的版本固化分支。受保护,不允许任何提交。")]),r._v(" "),e("li",[r._v("master:主分支,定期同步最新代码,目前仅支持本人(傲世孤尘/雨韵诗泽)提交。")])]),r._v(" "),e("h1",{attrs:{id:"✊贡献的方式"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#✊贡献的方式"}},[r._v("#")]),r._v(" ✊贡献的方式")]),r._v(" "),e("p",[r._v("包括,但不限于以下形式:")]),r._v(" "),e("ul",[e("li",[r._v("提交"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1)]),r._v(" "),e("li",[r._v("参与"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1),r._v("解决的必要性、解决方案的讨论、给出建设性的意见")]),r._v(" "),e("li",[r._v("领取"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1),r._v(" 并完成开发、提交PR")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("完善代码注释")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("增加测试代码")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("优化现有代码")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("优化操作体验")]),r._v(" "),e("li",[r._v("通过公众号、博客、贴吧、论坛等形式分享/宣传中微子代理")]),r._v(" "),e("li",[r._v("丰富项目文档,包括使用过程中踩过的坑、需要优化的点、具体问题的解决方法等")])]),r._v(" "),e("h1",{attrs:{id:"🧬贡献代码的步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🧬贡献代码的步骤"}},[r._v("#")]),r._v(" 🧬贡献代码的步骤")]),r._v(" "),e("ul",[e("li",[r._v("在Gitee上fork项目到自己的仓库")]),r._v(" "),e("li",[r._v("将fork后的自己仓库的项目clone到本地")]),r._v(" "),e("li",[r._v("拉取dev分支最新代码,并修改")]),r._v(" "),e("li",[r._v("commit并push到自己的仓库")]),r._v(" "),e("li",[r._v("登录Gitee在的仓库上可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。")]),r._v(" "),e("li",[r._v("等待合并")])]),r._v(" "),e("h1",{attrs:{id:"📐pr的规范"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#📐pr的规范"}},[r._v("#")]),r._v(" 📐PR的规范")]),r._v(" "),e("blockquote",[e("p",[r._v("你可能发现有的代码并不符合这个规范,但我们后续都会朝着这个方向迈进。后续我们会逐步全面规范化,请先保证新提交的代码满足以下要求:")])]),r._v(" "),e("ul",[e("li",[r._v("注释完备,尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,必要时请添加单元测试,如果愿意,也可以加上你的大名。")]),r._v(" "),e("li",[r._v("原则上,不允许自行添加第三方依赖库。若确有必要,请先和项目负责人沟通达成一致。")]),r._v(" "),e("li",[r._v("对现有代码的优化,请在注释中说明原因。")]),r._v(" "),e("li",[r._v("如果涉及到数据库的变更,则至少需要做到以下几点:\n"),e("ul",[e("li",[r._v("h2、mysql下均测试通过")]),r._v(" "),e("li",[r._v("在"),e("code",[r._v("./neutrino-proxy-server/src/main/resource/sql")]),r._v("下维护更新对应的表结构sql文件")]),r._v(" "),e("li",[r._v("对于新增的表,维护必要的初始化数据")]),r._v(" "),e("li",[r._v("在对应的mysql、h2的update目录下,维护SQL变更记录,确保SQL执行测试通过")])])])])])}),[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file diff --git a/assets/js/31.3d915a65.js b/assets/js/31.3d915a65.js new file mode 100644 index 00000000..6bc24307 --- /dev/null +++ b/assets/js/31.3d915a65.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{397:function(t,e,n){"use strict";n.r(e);var s=n(14),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"主要目录、文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#主要目录、文件"}},[t._v("#")]),t._v(" 主要目录、文件")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("├── assets (资源文件)\n├── docs (项目相关的一些文档)\n├── neutrino-proxy-admin (管理后台前端项目,基于vue-element-admin)\n├── neutrino-proxy-client (基于netty的代理客户端,用于和服务端交互、转发内网数据)\n├── neutrino-proxy-core (代理相关的公共代码(协议、常量))\n├── neutrino-proxy-server (基于netty的代理服务端,用于和客户段交互,将客户端转发的内网数据转发至外网端口)\n├── neutrino-proxy-vuepress (中微子代理官网文档)\n├── scripts (常用的编译、打包脚本)\n├── Milestone.md (里程碑事件节点)\n├── VLog.md (版本变更记录)\n└── todolist.MD (近期的开发计划)\n")])])]),e("h1",{attrs:{id:"代码分支说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#代码分支说明"}},[t._v("#")]),t._v(" 代码分支说明")]),t._v(" "),e("ul",[e("li",[t._v("dev:常规开发分支,日常的开发、Bug修复、提交PR都在此分支")]),t._v(" "),e("li",[t._v("feature/xxx:特征分支,一些试验性开发、提交PR都在此分支,xxx可自行取一个有意义的名称")]),t._v(" "),e("li",[t._v("release/xxx:发行版分支,作为阶段性成果、重大更新的版本固化分支。受保护,不允许任何提交。")]),t._v(" "),e("li",[t._v("master:主分支,定期同步最新代码,目前仅支持本人(傲世孤尘/雨韵诗泽)提交。")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/32.ebdd578e.js b/assets/js/32.ebdd578e.js new file mode 100644 index 00000000..60793397 --- /dev/null +++ b/assets/js/32.ebdd578e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{398:function(e,v,_){"use strict";_.r(v);var n=_(14),a=Object(n.a)({},(function(){var e=this,v=e._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[v("h1",{attrs:{id:"代理实现中涉及的几类channel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理实现中涉及的几类channel"}},[e._v("#")]),e._v(" 代理实现中涉及的几类Channel")]),e._v(" "),v("h2",{attrs:{id:"指令通道-cmdchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#指令通道-cmdchannel"}},[e._v("#")]),e._v(" 指令通道(CmdChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护客户端与服务端之间的指令通讯,由客户端启动后向服务端发起连接请求,服务端验证license成功后连接建立。")]),e._v(" "),v("li",[e._v("服务端维护第一个CmdChannel的映射表,key为licenseId。服务端可以根据licenseId,向指定的客户端指令通道发布指令。")]),e._v(" "),v("li",[e._v("该通道建立完成后,服务端会将该license授权的外网映射端口打开,等待用户访问。正常情况下,只要客户端不下线,该通道一直可用。")]),e._v(" "),v("li",[e._v("然后服务端维护第二个CmdChannel的映射表,key为服务端外网端口。服务端可以根据指定的外网端口,向指定的客户端指令通道发布指令。")])]),e._v(" "),v("h2",{attrs:{id:"用户访问通道-visitorchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#用户访问通道-visitorchannel"}},[e._v("#")]),e._v(" 用户访问通道(VisitorChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护访问者与服务端端口之间的通讯,由访问者向服务端映射的外网端口发起请求开始建立,具体断开时机由实际的被代理的\n协议决定。")]),e._v(" "),v("li",[e._v("如HTTP/1.0下,用户向该端口发起请求,响应结束后,该通道随之关闭,下一次发起请求后,重新建立新的连接。")]),e._v(" "),v("li",[e._v("该连接建立后,服务端会向该外网端口映射的指令通道发送"),v("code",[e._v("Connect")]),e._v("指令,传输该外网端口需要代理的内网信息,\n如:"),v("code",[e._v("127.0.0.1:3306")]),e._v("。")])]),e._v(" "),v("h2",{attrs:{id:"被代理服务的实际通道-realserverchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#被代理服务的实际通道-realserverchannel"}},[e._v("#")]),e._v(" 被代理服务的实际通道(RealServerChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护客户端与实际被代理服务之间的通讯,当客户端接收到服务端的"),v("code",[e._v("Connect")]),e._v("指令后,客户端便会建立该通道。")])]),e._v(" "),v("h2",{attrs:{id:"代理数据传输的通道-proxychannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理数据传输的通道-proxychannel"}},[e._v("#")]),e._v(" 代理数据传输的通道(ProxyChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责完成内网被代理服务与代理服务端之间的数据转发任务。")]),e._v(" "),v("li",[e._v("每个客户端维护一个"),v("code",[e._v("ProxyChannel")]),e._v("的缓存队列,需要时从该队列中取,当取不到时,直接新建一个"),v("code",[e._v("ProxyChannel")]),e._v("返回。\n当一个"),v("code",[e._v("ProxyChannel")]),e._v("实例用完后,需要归还到缓存队列中("),v("code",[e._v("ProxyChannel")]),e._v("收到"),v("code",[e._v("DisConnect")]),e._v("指令时)。")]),e._v(" "),v("li",[e._v("当"),v("code",[e._v("RealServerChannel")]),e._v("建立完成后,就会获取相关联的"),v("code",[e._v("ProxyChannel")]),e._v(",并与其绑定。设置"),v("code",[e._v("RealServerChannel")]),e._v("为\n可读状态。然后通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Connect")]),e._v("指令。")])]),e._v(" "),v("h1",{attrs:{id:"代理实现流程"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理实现流程"}},[e._v("#")]),e._v(" 代理实现流程")]),e._v(" "),v("h2",{attrs:{id:"_1、服务连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1、服务连接阶段"}},[e._v("#")]),e._v(" 1、服务连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("1.1、客户端根据是否需要使用SSL,选择对应的服务端端口发起连接,建立"),v("code",[e._v("CmdChannel")]),e._v("。")]),e._v(" "),v("li",[e._v("1.2、客户端根据用户输入或配置文件获取"),v("code",[e._v("license")]),e._v(",并携带"),v("code",[e._v("license")]),e._v("通过"),v("code",[e._v("CmdChannel")]),e._v("向服务端发送"),v("code",[e._v("Auth")]),e._v("指令。")]),e._v(" "),v("li",[e._v("1.3、服务端通过"),v("code",[e._v("CmdChannel")]),e._v("接收到来自客户端的"),v("code",[e._v("Auth")]),e._v("指令。若验证"),v("code",[e._v("license")]),e._v("有效,则建立"),v("code",[e._v("licenseId")]),e._v("与"),v("code",[e._v("CmdChannel")]),e._v("的映射缓存、\n外网端口与"),v("code",[e._v("CmdChannel")]),e._v("的映射缓存。并启动服务端代理端口,等待用户连接。")])]),e._v(" "),v("h2",{attrs:{id:"_2、用户连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2、用户连接阶段"}},[e._v("#")]),e._v(" 2、用户连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("2.1、用户向服务端代理的外网端口发起请求,服务端建立"),v("code",[e._v("VisitorChannel")]),e._v("。")]),e._v(" "),v("li",[e._v("2.2、根据外网端口查找"),v("code",[e._v("CmdChannel")]),e._v(",若不存在有效的"),v("code",[e._v("CmdChannel")]),e._v(",则关闭该"),v("code",[e._v("VisitorChannel")]),e._v("。否则,\n设置"),v("code",[e._v("VisitorChannel")]),e._v("为不可读,并携带内网映射信息(如:"),v("code",[e._v("127.0.0.1:3306")]),e._v(")通过"),v("code",[e._v("CmdChannel")]),e._v("向客户端发送"),v("code",[e._v("Connect")]),e._v("指令。")])]),e._v(" "),v("h2",{attrs:{id:"_3、实际被代理服务连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_3、实际被代理服务连接阶段"}},[e._v("#")]),e._v(" 3、实际被代理服务连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("3.1、客户端通过"),v("code",[e._v("CmdChannel")]),e._v("接收到服务端的"),v("code",[e._v("Connect")]),e._v("指令。拿到需要代理的内网IP、端口号,向实际被\n代理服务发起连接请求,若连接失败,则通过"),v("code",[e._v("CmdChannel")]),e._v("向服务端发送"),v("code",[e._v("DisConnect")]),e._v("指令。建立"),v("code",[e._v("RealServerChannel")]),e._v("成功,设置"),v("code",[e._v("RealServerChannel")]),e._v("为不可读\n状态,并进入4.1阶段")])]),e._v(" "),v("h2",{attrs:{id:"_4、代理通道连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_4、代理通道连接阶段"}},[e._v("#")]),e._v(" 4、代理通道连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("4.1、客户端通过"),v("code",[e._v("ProxyChannelQueue")]),e._v("获取或新建一个"),v("code",[e._v("ProxyChannel")]),e._v(",并将"),v("code",[e._v("RealServerChannel")]),e._v("与"),v("code",[e._v("ProxyChannel")]),e._v("进行绑定。")]),e._v(" "),v("li",[e._v("4.2、客户端通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Connect")]),e._v("指令。")]),e._v(" "),v("li",[e._v("4.3、服务端通过"),v("code",[e._v("ProxyChannel")]),e._v("通道收到来自客户端的"),v("code",[e._v("Connect")]),e._v("指令后,将"),v("code",[e._v("ProxyChannel")]),e._v("与对应的"),v("code",[e._v("VisitorChannel")]),e._v("进行绑定,并\n设置"),v("code",[e._v("VisitorChannel")]),e._v("为可读状态。")])]),e._v(" "),v("h2",{attrs:{id:"_5、数据传输阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_5、数据传输阶段"}},[e._v("#")]),e._v(" 5、数据传输阶段")]),e._v(" "),v("ul",[v("li",[e._v("5.1、服务端通过"),v("code",[e._v("VisitorChannel")]),e._v("收到来自用户的请求数据,然后找到"),v("code",[e._v("VisitorChannel")]),e._v("绑定的"),v("code",[e._v("ProxyChannel")]),e._v(",\n通过"),v("code",[e._v("ProxyChannel")]),e._v("发送"),v("code",[e._v("Transfer")]),e._v("指令,并携带用户请求数据。")]),e._v(" "),v("li",[e._v("5.2、客户端通过"),v("code",[e._v("ProxyChannel")]),e._v("收到来自服务端的"),v("code",[e._v("Transfer")]),e._v("指令,取出用户请求数据。找到"),v("code",[e._v("ProxyChannel")]),e._v("绑定的"),v("code",[e._v("RealServerChannel")]),e._v(",\n通过"),v("code",[e._v("RealServerChannel")]),e._v("向被代理服务写入用户请求数据。")]),e._v(" "),v("li",[e._v("5.3、客户端通过"),v("code",[e._v("RealServerChannel")]),e._v("收到被代理服务响应的数据,找到"),v("code",[e._v("RealServerChannel")]),e._v("绑定的"),v("code",[e._v("ProxyChannel")]),e._v(",\n通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Transfer")]),e._v("指令,并携带响应数据。")]),e._v(" "),v("li",[e._v("5.4、服务端通过"),v("code",[e._v("ProxyChannel")]),e._v("收到来自客户端的"),v("code",[e._v("Transfer")]),e._v("指令,找到"),v("code",[e._v("ProxyChannel")]),e._v("绑定的"),v("code",[e._v("VisitorChannel")]),e._v(",\n通过"),v("code",[e._v("VisitorChannel")]),e._v("向用户端写入响应数据。")])])])}),[],!1,null,null,null);v.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/33.32f5fccd.js b/assets/js/33.32f5fccd.js new file mode 100644 index 00000000..0a35dd0b --- /dev/null +++ b/assets/js/33.32f5fccd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{399:function(t,e,l){"use strict";l.r(e);var i=l(14),a=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("日期")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("渠道")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("昵称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("备注")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-28")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("雪猫")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬吃肯德基")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-27")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("D")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬喝杯茶")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Simen")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("伟大的项目,尽点绵薄之力")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("KAI")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大佬加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-22")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("walking")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("好东西必须支持一下")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-21")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("洗最大的碗")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("中微子越来越强大,雨哥越来越富有")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-15")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("一杯香梨")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("支付宝收款码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("*平")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大佬继续加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("26263")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("姫野永遠")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-26")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("180")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Teacher Du")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-01")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Sun")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢大佬,请你喝杯奶茶[微笑]")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("杨娃娃")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Mark Isaac赵方丈")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("金额不大,开源感恩。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-11")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("海洋")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-31")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("失败女神")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-28")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("AdrianPteLtd.com-咨询")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("MaxKeyTop")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬抽包烟")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-04")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("姫野永遠")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("16.8")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("迟迟🌱")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-27")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Arno")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("zhujue888")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("小跟班")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("失败女神")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Admin")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("李阳")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开源无限好")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("罗宾")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-07")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("罗宾")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-03")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Admin")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("TYY")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("笑看")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-26")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("至少还有满天星光照耀你")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-23")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Yohanes")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-23")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("jam_lee")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!希望能支持域名映射")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("实习两年半")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-02")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("阳光很暖")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/34.9942da58.js b/assets/js/34.9942da58.js new file mode 100644 index 00000000..8a16492d --- /dev/null +++ b/assets/js/34.9942da58.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{400:function(t,e,l){"use strict";l.r(e);var i=l(14),a=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("日期")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("渠道")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("昵称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("备注")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-11-19")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("支付宝收款码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("2")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("*亮")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-10-06")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("碧云天")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-10-14")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("泛微eteams刘新东17699059661")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-09-04")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("8.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("lusen998")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-08-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("吴忧吴虑")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-07-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("QuanJWS")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!看着很不错的样子,加油!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-07-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("120")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("陈某")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-05-07")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("仲秀")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-04-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("暮光:城中城")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-04-03")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("仲秀")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大神,非常感谢")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("include")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("9")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("宗")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("麻烦了,最好能加一个返回公网IP。"),e("br"),t._v("不知道有没有几乎通用的方案")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-22")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("不允")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请你吃外卖")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-02-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-02-02")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("38.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("不请自来君")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("唐吉诃德")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!是一个不错的项目!"),e("br"),t._v("希望继续完善界面UI的设计。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("shiyongsway")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("8.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-17")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/35.cf7271d2.js b/assets/js/35.cf7271d2.js new file mode 100644 index 00000000..01ee2e97 --- /dev/null +++ b/assets/js/35.cf7271d2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{401:function(t,e,l){"use strict";l.r(e);var a=l(14),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"企业登记"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#企业登记"}},[t._v("#")]),t._v(" 企业登记")]),t._v(" "),e("p",[t._v("如果您所在的企业使用到了中微子代理,麻烦抽出宝贵的时间"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues/I6WC71",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击这里"),e("OutboundLink")],1),t._v("进行登记,这将会助力中微子代理走得更远。")]),t._v(" "),e("h2",{attrs:{id:"案例展示"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#案例展示"}},[t._v("#")]),t._v(" 案例展示")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("企业名称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("logo")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("官网地址")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("使用人数")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("用途")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("北京吉威空间信息股份有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1681717113043198586/b7f0b6b3_8006959.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.geoway.com.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发环境的session会话同步与开发环境的对接测试华为云与微信等云端回调接口")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("悦邻供应链科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1684996781645413637/277d0b9b_5234431.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://yinghecloud.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("阿依瓦(北京)技术有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1684998300312143862/74a96cec_4788807.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://www.alva.com.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试,云端同步数据等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("常州裕景信息科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1688542732735699110/bb238481_2342807.jpeg",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("无")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("远程管理虚拟机,接口、数据库等功能调试")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("湖北楚商联盟金融信息服务有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1675831034400302128/3621dd88_9993534.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.chually.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试,云端同步数据等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("中科元景智能(深圳)有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1689584776864189267/d66c78a8_9373604.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://yjupi.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("本地开发连接测试环境及生产环境内网服务器,包含数据库、redis、模块服务等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("长沙小蜂科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1692156755102754023/c7d82730_1207310.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("无")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("1~3人")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("主要用于测试环境内网服务器,包含数据库,远程桌面等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("江西六湛科技")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1694073479398767455/0f7570a7_10166803.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.liuzhankj.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("主要用于部署一些使用时长较短的项目")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("杭州艾佳智能科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1695608742879653626/314c72a4_5720492.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.ajaiot.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("12-16人")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("公司部分设备是通过udp通信的,对接调试设备,搭建测试环境服务网关的时候需要")])])])])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/36.9bd0c33b.js b/assets/js/36.9bd0c33b.js new file mode 100644 index 00000000..9a248722 --- /dev/null +++ b/assets/js/36.9bd0c33b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{402:function(_,v,e){"use strict";e.r(v);var t=e(14),r=Object(t.a)({},(function(){var _=this,v=_._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("h2",{attrs:{id:"_2-0-2"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-2"}},[_._v("#")]),_._v(" 2.0.2")]),_._v(" "),v("ul",[v("li",[_._v("bug修复\n"),v("ul",[v("li",[_._v("解决安全组在ipv6场景下误拦截导致域名映射访问不通的问题")]),_._v(" "),v("li",[_._v("解决native编译后,端口池批量删除报错的问题")]),_._v(" "),v("li",[_._v("解决客户端docker方式部署环境变量指定参数不生效的问题")]),_._v(" "),v("li",[_._v("服务端解决native下清理日志定时任务报错的问题")]),_._v(" "),v("li",[_._v("解决后台分页查询的已知问题")]),_._v(" "),v("li",[_._v("端口映射中的客户端ip字段加长一点,解决配置阿里云数据库域名字段不够的问题")]),_._v(" "),v("li",[_._v("解决服务端native部署时,访问后台用户列表,日志警告“you should use: nativeMetadata.registerField(field) at aot runtime”的问题")])])]),_._v(" "),v("li",[_._v("新增功能\n"),v("ul",[v("li",[_._v("新增后台域名管理,⽀持新增、修改、删除、禁⽤主域名,支持添加多级域名。")]),_._v(" "),v("li",[_._v("域名管理支持上传域名对应的SSL证书、⽀持设置强制HTTPS、⽀持域名映射⾃动加载对应的服务器证书。")]),_._v(" "),v("li",[_._v("端口映射支持选择切换不同的主域名,⽀持绑定多个⼦域名,单个端⼝⽀持绑定多个不同的主域名。")])])]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[v("strong",[_._v("域名和SSL证书的配置由配置文件配置改为后台域名管理页面配置。")])]),_._v(" "),v("li",[_._v("去掉了配置文件声明服务器端域名和证书的方式,改为通过页面进行管理,请注意自行进行数据迁移。")]),_._v(" "),v("li",[_._v("数据库新增"),v("code",[_._v("域名表")]),_._v("和"),v("code",[_._v("域名映射中间表")]),_._v(",修改了"),v("code",[_._v("端口映射表")]),_._v(",涉及到表结构变更,执行"),v("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/blob/master/neutrino-proxy-server/src/main/resources/sql/mysql/update/UPDATE-20240808.SQL",target:"_blank",rel:"noopener noreferrer"}},[_._v("增量SQL"),v("OutboundLink")],1)])])])]),_._v(" "),v("h2",{attrs:{id:"_2-0-1"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-1"}},[_._v("#")]),_._v(" 2.0.1")]),_._v(" "),v("ul",[v("li",[_._v("jdk版本升级为21")]),_._v(" "),v("li",[_._v("新增安全组模块,支持黑名单、白名单限制")]),_._v(" "),v("li",[_._v("支持对用户、license限速")]),_._v(" "),v("li",[_._v("修复HTTP(S)映射时使用tcp端口访问正常,使用域名访问偶现一直loading的问题")]),_._v(" "),v("li",[_._v("修复HTTP(S)映射时使用映射的域名上传文件时,连接中断的问题")]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[_._v("jdk版本升级为了jdk21,jar部署时请注意")]),_._v(" "),v("li",[_._v("涉及到表结构变更,执行"),v("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/blob/master/neutrino-proxy-server/src/main/resources/sql/mysql/update/UPDATE-20231215.SQL",target:"_blank",rel:"noopener noreferrer"}},[_._v("增量SQL"),v("OutboundLink")],1)])])])]),_._v(" "),v("h2",{attrs:{id:"_2-0-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-0"}},[_._v("#")]),_._v(" 2.0.0")]),_._v(" "),v("ul",[v("li",[_._v("solon版本升级为"),v("code",[_._v("2.5.11")])]),_._v(" "),v("li",[_._v("jdk版本升级为17")]),_._v(" "),v("li",[_._v("支持原生编译改造")]),_._v(" "),v("li",[_._v("默认支持的数据库由sqlite改为h2")]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[_._v("jdk版本升级为了jdk17,jar部署时请注意")]),_._v(" "),v("li",[_._v("去掉了默认的sqlite数据库,改为了h2。如果之前使用sqlite,请自行处理数据迁移")]),_._v(" "),v("li",[_._v("配置文件做了较大调整,请参照官网使用须知中的"),v("code",[_._v("服务端配置")]),_._v("、"),v("code",[_._v("客户端配置")]),_._v("进行更新")])])])])])}),[],!1,null,null,null);v.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/37.71c8b009.js b/assets/js/37.71c8b009.js new file mode 100644 index 00000000..7c63fe60 --- /dev/null +++ b/assets/js/37.71c8b009.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{403:function(_,v,a){"use strict";a.r(v);var t=a(14),l=Object(t.a)({},(function(){var _=this,v=_._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("h2",{attrs:{id:"_1-9-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-9-0"}},[_._v("#")]),_._v(" 1.9.0")]),_._v(" "),v("ul",[v("li",[_._v("端口映射支持UDP协议")]),_._v(" "),v("li",[_._v("端口映射HTTP(S)新增打开网页按钮,优先使用域名打开")]),_._v(" "),v("li",[_._v("新增/编辑端口映射时端口占用检测功能屏蔽,解决docker下使用的各种问题")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-6"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-6"}},[_._v("#")]),_._v(" 1.8.6")]),_._v(" "),v("ul",[v("li",[_._v("端口映射选择端口支持分页")]),_._v(" "),v("li",[_._v("新增/更新端口映射,增加端口占用检测(端口映射编辑时,如果端口号没有变动,则不验证。避免出现端口映射正在使用时,无法更新端口映射其他信息的问题)")]),_._v(" "),v("li",[_._v("下拉搜索license,支持模糊搜索")]),_._v(" "),v("li",[_._v("license下拉用户搜索,支持模糊搜索")]),_._v(" "),v("li",[_._v("端口映射HTTP(S)新增打开网页按钮")]),_._v(" "),v("li",[_._v("客户端断开连接时,记录日志空指针异常问题修复")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-5"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-5"}},[_._v("#")]),_._v(" 1.8.5")]),_._v(" "),v("ul",[v("li",[_._v("后台端口池管理支持批量删除")]),_._v(" "),v("li",[_._v("端口映射下拉选择端口支持搜索")]),_._v(" "),v("li",[_._v("客户端/服务端配置增加心跳日志开关,有需要时开启,方便排查问题")]),_._v(" "),v("li",[_._v("客户端/服务端读写超时逻辑微调")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-4"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-4"}},[_._v("#")]),_._v(" 1.8.4")]),_._v(" "),v("ul",[v("li",[_._v("增加对mariadb的支持")]),_._v(" "),v("li",[_._v("服务端/客户端,支持配置文件、启动参数指定日志级别")]),_._v(" "),v("li",[_._v("客户端支持配置文件指定重连间隔,是否开启无限重连")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-3"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-3"}},[_._v("#")]),_._v(" 1.8.3")]),_._v(" "),v("ul",[v("li",[_._v("客户端重连优化")]),_._v(" "),v("li",[_._v("服务端验证客户端身份逻辑优化")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-2"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-2"}},[_._v("#")]),_._v(" 1.8.2")]),_._v(" "),v("ul",[v("li",[_._v("增加HTTPS的支持。")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-0"}},[_._v("#")]),_._v(" 1.8.0")]),_._v(" "),v("ul",[v("li",[_._v("端口映射支持选择协议")]),_._v(" "),v("li",[_._v("HTTP协议下映射支持配置子域名(前提是server端配置了域名)")])]),_._v(" "),v("h2",{attrs:{id:"_1-7-1"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-7-1"}},[_._v("#")]),_._v(" 1.7.1")]),_._v(" "),v("ul",[v("li",[_._v("针对管理后台各页面的排序、搜索条件的优化")]),_._v(" "),v("li",[_._v("增加端口池分组、相关的端口映射优化")]),_._v(" "),v("li",[_._v("增加了报表管理模块:用户流量报表、license流量报表、用户流量月度明细、license流量月度明细")]),_._v(" "),v("li",[_._v("完成首页图表展示:license统计、端口映射统计、今日流量统计、汇总流量统计、最近15日流量折线图")])]),_._v(" "),v("h2",{attrs:{id:"_1-7-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-7-0"}},[_._v("#")]),_._v(" 1.7.0")]),_._v(" "),v("ul",[v("li",[_._v("底层框架更换为Solon + MybatisPlus")])]),_._v(" "),v("h2",{attrs:{id:"_1-6-4"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-6-4"}},[_._v("#")]),_._v(" 1.6.4")]),_._v(" "),v("ul",[v("li",[_._v("支持代理服务端用户(删除/禁用)、端口池(删除/禁用/启用)、License(删除/禁用/启用)、端口映射(新增/删除/禁用/启用)实时生效")]),_._v(" "),v("li",[_._v("启动参数优化")]),_._v(" "),v("li",[_._v("服务端静态资源服务支持缓存、gzip压缩,提升响应速度")])]),_._v(" "),v("h2",{attrs:{id:"_1-6-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-6-0"}},[_._v("#")]),_._v(" 1.6.0")]),_._v(" "),v("ul",[v("li",[_._v("新增日志管理模块,调度日志迁移至日志管理")]),_._v(" "),v("li",[_._v("管理后台新增登录日志")]),_._v(" "),v("li",[_._v("新增首页流量统计")])]),_._v(" "),v("h2",{attrs:{id:"_1-5-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-5-0"}},[_._v("#")]),_._v(" 1.5.0")]),_._v(" "),v("ul",[v("li",[_._v("管理后台新增用户管理、License管理、端口映射、调度管理、客户端连接日志、调度日志")]),_._v(" "),v("li",[_._v("支持默认sqlite数据库")]),_._v(" "),v("li",[_._v("底层框架Aop、Banner、SqlMapper、Ioc、@Value注解、Yml配置加载、静态资源服务等优化")]),_._v(" "),v("li",[_._v("底层框架新增@Async、@Singleton等注解")]),_._v(" "),v("li",[_._v("新增AsgcCompiler、ApplicationEvent机制封装")])]),_._v(" "),v("h2",{attrs:{id:"_1-0-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-0-0"}},[_._v("#")]),_._v(" 1.0.0")]),_._v(" "),v("blockquote",[v("p",[_._v("第一个基本可用版本")])]),_._v(" "),v("ul",[v("li",[_._v("基于自研底层应用框架、Netty")]),_._v(" "),v("li",[_._v("纯配置实现、无管理后台")]),_._v(" "),v("li",[_._v("支持TCP代理")])])])}),[],!1,null,null,null);v.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/38.7632b8b0.js b/assets/js/38.7632b8b0.js new file mode 100644 index 00000000..08416dcf --- /dev/null +++ b/assets/js/38.7632b8b0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{404:function(v,_,l){"use strict";l.r(_);var i=l(14),t=Object(i.a)({},(function(){var v=this,_=v._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("ul",[_("li",[v._v("2024-12-10 2.0.2版本发布,新增域名管理,端口映射支持绑定多个域名")]),v._v(" "),_("li",[v._v("2023-12-21 2.0.1版本发布,jdk版本升级到21,支持安全组(黑/白名单IP限制)、限速")]),v._v(" "),_("li",[v._v("2023-10-31 2.0.0版本发布,升级jdk版本至jdk17、支持原生编译、去掉sqlite改为默认H2数据库")]),v._v(" "),_("li",[v._v("2023-09-25 中微子代理Gitee Star数突破1000")]),v._v(" "),_("li",[v._v("2023-09-22 1.9.0版本发布,端口映射支持UDP协议")]),v._v(" "),_("li",[v._v("2023-09-07 1.8.6版本发布,后台若干细节优化")]),v._v(" "),_("li",[v._v("2023-07-04 1.8.5版本发布,后台若干细节优化、配置文件优化")]),v._v(" "),_("li",[v._v("2023-06-08 1.8.4版本发布,增加对mariadb的支持、配置文件支持指定日志级别、重连参数")]),v._v(" "),_("li",[v._v("2023-06-03 1.8.3版本发布,客户端重连优化、服务端验证客户端身份逻辑优化")]),v._v(" "),_("li",[v._v("2023-05-27 1.8.2版本发布,增加HTTPS支持")]),v._v(" "),_("li",[v._v("2023-04-03 1.8.0版本发布,端口映射支持选择协议,HTTP映射支持子域名")]),v._v(" "),_("li",[v._v("2023-03-26 1.7.1版本发布,新增端口池分组、新增报表管理模块、首页图表优化")]),v._v(" "),_("li",[v._v("2023-03-12 1.7.0版本发布,底层框架更换为Solon + MybatisPlus")]),v._v(" "),_("li",[v._v("2023-02-23 1.6.4版本发布,管理后台增、删、改、禁用实时生效,启动参数、GZip优化")]),v._v(" "),_("li",[v._v("2023-01-16 加入Dromara组织")]),v._v(" "),_("li",[v._v("2023-01-08 中微子代理Gitee Star突破100")]),v._v(" "),_("li",[v._v("2022-11-23 1.6.0版本发布,新增日志管理模块,新增首页流量统计")]),v._v(" "),_("li",[v._v("2022-10-12 1.5.0版本发布,底层框架优化,新增管理后台")]),v._v(" "),_("li",[v._v("2022-06-16 1.0.0版本发布,基于自研应用框架、纯配置无管理后台")])])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/39.5140c9f6.js b/assets/js/39.5140c9f6.js new file mode 100644 index 00000000..9ef0b57d --- /dev/null +++ b/assets/js/39.5140c9f6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{405:function(t,r,e){"use strict";e.r(r);var n=e(14),o=Object(n.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("p",[t._v("如果您正在使用这个项目并感觉良好,或者是想支持我继续开发,您可以通过如下"),r("code",[t._v("任意")]),t._v("方式支持我:")]),t._v(" "),r("ol",[r("li",[t._v("Star并分享 "),r("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[t._v("neutrino-proxy"),r("OutboundLink")],1),t._v(" 🚀\n谢谢! ❤️")])]),t._v(" "),r("h2",{attrs:{id:"致谢"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#致谢"}},[t._v("#")]),t._v(" 致谢")]),t._v(" "),r("p",[t._v("感谢给予支持的朋友,您的支持是我前进的动力 🎉")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/4.3e10c61a.js b/assets/js/4.3e10c61a.js new file mode 100644 index 00000000..3b780629 --- /dev/null +++ b/assets/js/4.3e10c61a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{285:function(t,s,n){},324:function(t,s,n){"use strict";n(285)},371:function(t,s,n){"use strict";n.r(s);const i=["这里什么都没有。","我是谁?我在哪?","这是一个Four-Oh-Four.","看来我们的链接坏掉了~"];var o={methods:{getMsg:()=>i[Math.floor(Math.random()*i.length)]}},e=(n(324),n(14)),a=Object(e.a)(o,(function(){var t=this._self._c;return t("div",{staticClass:"theme-container"},[t("div",{staticClass:"theme-vdoing-content"},[t("span",[this._v("404")]),this._v(" "),t("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),t("router-link",{attrs:{to:"/"}},[this._v("返回首页")])],1)])}),[],!1,null,"439bb2a8",null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/40.40facdf8.js b/assets/js/40.40facdf8.js new file mode 100644 index 00000000..cbfaceba --- /dev/null +++ b/assets/js/40.40facdf8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{406:function(t,n,s){"use strict";s.r(n);var e=s(14),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/5.26fb3e34.js b/assets/js/5.26fb3e34.js new file mode 100644 index 00000000..7d5aa1b2 --- /dev/null +++ b/assets/js/5.26fb3e34.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{366:function(t,e,l){t.exports=l.p+"assets/img/a1.578566de.png"},367:function(t,e,l){t.exports=l.p+"assets/img/a2.58603eb1.png"},395:function(t,e,l){"use strict";l.r(e);var a=l(14),_=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"个人赞赏说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#个人赞赏说明"}},[t._v("#")]),t._v(" 个人赞赏说明")]),t._v(" "),e("p",[t._v("随着用户增加,需要协助解决的问题也多种多样,为了能给用户提供 "),e("code",[t._v("更优质")]),t._v("、"),e("code",[t._v("更准确")]),t._v(" 的 疑难问题 解答我们推出赞赏咨询服务")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("赞赏金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("服务时长")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("服务说明")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("任意金额")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您将获得赞助者列表的永久留名。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("一个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您在群内反馈的问题将优先得到作者响应")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("120")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("三个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("获得微信一对一的咨询服务")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("399")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("六个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("获得官网首页特别赞助席位一个,一次远程协助")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("更多金额")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您将获得私人定制服务")])])])]),t._v(" "),e("blockquote",[e("p",[t._v("注意1:服务项目是逐级叠加:如,您赞赏的金额是 80 员那么您将享受:任意金额、一个月、三个月的服务内容")])]),t._v(" "),e("blockquote",[e("p",[t._v("注意2:二开问题不在个人赞赏支持服务范畴内,如需咨询二开问题或者二开方案请找作者协商")])]),t._v(" "),e("h2",{attrs:{id:"赞赏途径"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#赞赏途径"}},[t._v("#")]),t._v(" 赞赏途径")]),t._v(" "),e("blockquote",[e("p",[t._v("除4以外,赞赏后请及时通过官网首页微信二维码与作者取得联系")])]),t._v(" "),e("ul",[e("li",[t._v("1、微信赞赏")]),t._v(" "),e("li",[t._v("2、支付宝转账")]),t._v(" "),e("li",[t._v("3、Gitee项目捐赠:"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击这里"),e("OutboundLink")],1),t._v("打开后拉到最底部点击捐赠")]),t._v(" "),e("li",[t._v("4、微信好友转账")])]),t._v(" "),e("table",[e("tr",[e("td",{attrs:{align:"center"}},[t._v("微信赞赏")]),e("td",{attrs:{align:"center"}},[t._v("支付宝转账")])]),t._v(" "),e("tr",[e("td",[e("img",{attrs:{width:"300px",src:l(366)}})]),e("td",[e("img",{attrs:{width:"300px",src:l(367)}})])]),t._v(" "),e("tr")])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/6.526bfcbe.js b/assets/js/6.526bfcbe.js new file mode 100644 index 00000000..06e8eba0 --- /dev/null +++ b/assets/js/6.526bfcbe.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{320:function(t,s,a){},368:function(t,s,a){"use strict";a(320)},407:function(t,s,a){"use strict";a.r(s);a(368);var r=a(14),o=Object(r.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",{attrs:{align:"center"}},[s("a",{staticClass:"become-sponsor",attrs:{href:"https://gitee.com/dromara/neutrino-proxy"}},[t._v("支持这个项目")])]),t._v(" "),s("br"),t._v(" "),s("p",{attrs:{align:"center"}},[s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"https://gitee.com/dromara/neutrino-proxy/badge/star.svg?theme=dark",alt:"star"}})]),t._v(" "),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"https://gitee.com/dromara/neutrino-proxy/badge/fork.svg?theme=dark",alt:"forks"}})])]),t._v(" "),s("br"),t._v(" "),s("br"),t._v(" "),s("br"),t._v(" "),s("h2",{attrs:{id:"⚡-反馈与交流"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#⚡-反馈与交流"}},[t._v("#")]),t._v(" ⚡ 反馈与交流")]),t._v(" "),s("p",[t._v("在使用过程中有任何问题和想法,请给我提 "),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[t._v("Issue"),s("OutboundLink")],1),t._v("。\n你也可以在Issue查看别人提的问题和给出解决方案。")]),t._v(" "),s("p",[t._v("或者加入我们的交流群:\n")]),s("div",{attrs:{align:"center"}},[s("img",{staticClass:"no-zoom",staticStyle:{width:"200px",margin:"10px"},attrs:{src:t.$withBase("/img/qrcode/wxq.png")}}),t._v(" "),s("p",[t._v('中微子 微信群(添加我微信备注"中微子进群")')])]),t._v(" "),s("br"),s("p"),t._v(" "),s("h2",{attrs:{id:"🌈特别赞助"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#🌈特别赞助"}},[t._v("#")]),t._v(" 🌈特别赞助")]),t._v(" "),s("div",{staticClass:"cardListContainer"},[s("div",{staticClass:"card-list"},[s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#102863","--random-color":"#102863",color:"#FFFFFF"},attrs:{href:"https://www.xigexb.com?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/xigexiaobao.jpg"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("喜鸽小宝")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("一个爱好写代码的同学。"),s("br"),t._v(" ")])])]),t._v(" "),s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#c6ddff","--random-color":"#c6ddff",color:"#000000"},attrs:{href:"https://7bu.top?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/7bu.ico"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("去不图床")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("杜老师说旗下付费图片外链平台。"),s("br"),t._v(" ")])])]),t._v(" "),s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#486898","--random-color":"#c6ddff",color:"#FFFFFF"},attrs:{href:"http://doc.zyplayer.com/#/integrate/zyplayer-doc?utm=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/zyplayer-doc.png"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("zyplayer-doc")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("私有化部署的企业级文档管理与知识库AI问答平台。")])])])])]),t._v(" "),s("h2",{attrs:{id:"🤝-dromara-组织项目"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#🤝-dromara-组织项目"}},[t._v("#")]),t._v(" 🤝 dromara 组织项目")]),t._v(" "),s("p",{attrs:{align:"center"}},[s("b",[s("a",{attrs:{href:"https://dromara.org/zh/projects/?from=neutrino-proxy",target:"_blank"}},[t._v("为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。")])])]),t._v(" "),s("p",[s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/TLog?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/tlog.png",msg:"一个轻量级的分布式日志标记追踪神器,10分钟即可接入,自动对日志打标签完成微服务的链路追踪"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/liteFlow?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/liteflow.png",msg:"轻量,快速,稳定,可编排的组件式流程引擎"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://hutool.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hutool.jpg",msg:"🍬小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://sa-token.cc/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/sa-token.png",msg:"一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/hmily?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hmily.png",msg:"高性能一站式分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/Raincat?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/raincat.png",msg:"强一致性分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/myth?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/myth.png",msg:"可靠消息分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://cubic.jiagoujishu.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/cubic.png",msg:"一站式问题定位平台,以agent的方式无侵入接入应用,完整集成arthas功能模块,致力于应用级监控,帮助开发人员快速定位问题"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://maxkey.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/maxkey.png",msg:"业界领先的身份管理和认证产品"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://forest.dtflyx.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/forest-logo.png",msg:"Forest能够帮助您使用更简单的方式编写Java的HTTP客户端",nf:""}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://jpom.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/jpom.svg",msg:"一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://su.usthe.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/sureness.png",msg:"面向 REST API 的高性能认证鉴权框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://easy-es.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/easy-es2.png",msg:"🚀傻瓜级ElasticSearch搜索引擎ORM框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/northstar?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/northstar_logo.png",msg:"Northstar盈富量化交易平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://hertzbeat.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hertzbeat-brand.svg",msg:"易用友好的云监控系统"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dromara.gitee.io/fast-request/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/fast-request.gif",msg:"Idea 版 Postman,为简化调试API而生"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.jeesuite.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/mendmix.png",msg:"开源分布式云原生架构一站式解决方案"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/koalas-rpc?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/koalas-rpc2.png",msg:"企业生产级百亿日PV高可用可拓展的RPC框架。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://async.sizegang.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/gobrs-async.png",msg:"🔥 配置极简功能强大的异步任务动态编排框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dynamictp.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dynamic-tp.png",msg:"🔥🔥🔥 基于配置中心的轻量级动态可监控线程池"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.x-easypdf.cn?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/x-easypdf.png",msg:"一个用搭积木的方式构建pdf的框架(基于pdfbox)"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://dromara.gitee.io/image-combiner?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/image-combiner.png",msg:"一个专门用于图片合成的工具,没有很复杂的功能,简单实用,却不失强大"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.herodotus.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dante-cloud.jpg",msg:"Dante-Cloud 是一款企业级微服务架构和服务能力开发平台。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://www.mtruning.club?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/go-view.png",msg:"低代码数据可视化开发平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://tangyh.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/lamp-cloud.png",msg:"微服务中后台快速开发平台,支持租户(SaaS)模式、非租户模式"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.redisfront.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/redis-front.png",msg:"RedisFront 是一款开源免费的跨平台 Redis 桌面客户端工具, 支持单机模式, 集群模式, 哨兵模式以及 SSH 隧道连接, 可轻松管理Redis缓存数据."}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.yuque.com/u34495/mivcfg?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/electron-egg.png",msg:"一个入门简单、跨平台、企业级桌面软件开发框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/open-capacity-platform?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/open-capacity-platform.jpg",msg:"简称ocp是基于Spring Cloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....)"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://easy-trans.fhs-opensource.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/easy_trans.png",msg:"Easy-Trans 一个注解搞定数据翻译,减少30%SQL代码量"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/neutrino-proxy?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/neutrino-proxy.svg",msg:"一款基于 Netty 的、开源的内网穿透神器。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://chatgpt.cn.obiscr.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/chatgpt.png",msg:"一个支持在 JetBrains 系列 IDE 上运行的 ChatGPT 的插件。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/zyplayer-doc?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/zyplayer-doc.png",msg:"zyplayer-doc是一款适合团队和个人使用的WIKI文档管理工具,同时还包含数据库文档、Api接口文档。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/payment-spring-boot?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/payment-spring-boot.png",msg:"最全最好用的微信支付V3 Spring Boot 组件。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.j2eefast.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/j2eefast.png",msg:"J2eeFAST 是一个致力于中小企业 Java EE 企业级快速开发平台,我们永久开源!"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/data-compare?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dataCompare.png",msg:"数据库比对工具:hive 表数据比对,mysql、Doris 数据比对,实现自动化配置进行数据比对,避免频繁写sql 进行处理,低代码(Low-Code) 平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/open-giteye-api?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/open-giteye-api.svg",msg:"giteye.net 是专为开源作者设计的数据图表服务工具类站点,提供了包括 Star 趋势图、贡献者列表、Gitee指数等数据图表服务。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/RuoYi-Vue-Plus?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/RuoYi-Vue-Plus.png",msg:"后台管理系统 重写 RuoYi-Vue 所有功能 集成 Sa-Token + Mybatis-Plus + Jackson + Xxl-Job + SpringDoc + Hutool + OSS 定期同步"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/RuoYi-Cloud-Plus?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/RuoYi-Cloud-Plus.png",msg:"微服务管理系统 重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo3.0 Sa-Token Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/stream-query?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/stream-query.png",msg:"允许完全摆脱 Mapper 的 mybatis-plus 体验!封装 stream 和 lambda 操作进行数据返回处理。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dromara.org/zh/projects/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dromara.png",msg:"让每一位开源爱好者,体会到开源的快乐。"}})])]),t._v(" "),s("h2",[t._v("🤝 友情开源项目")]),t._v(" "),s("p",[s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/noear/solon?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:t.$withBase("img/logo/solon_logo_500_150.png"),msg:"一个高效的应用开发框架:更快、更小、更简单。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/xiaonuobase/snowy?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:t.$withBase("img/logo/xiaonuo.png"),msg:"国内首个国密前后端分离快速开发平台"}})])]),t._v(" "),s("div",{staticClass:"wwads-cn wwads-horizontal page-wwads",attrs:{"data-id":"136"}}),t._v(" "),s("style",[t._v("\n .page-wwads{\n width:100%!important;\n min-height: 0;\n margin: 0;\n }\n .page-wwads .wwads-img img{\n width:80px!important;\n }\n .page-wwads .wwads-poweredby{\n width: 40px;\n position: absolute;\n right: 25px;\n bottom: 3px;\n }\n .wwads-content .wwads-text, .page-wwads .wwads-text{\n height: 100%;\n padding-top: 5px;\n display: block;\n }\n.friends-item {\n width: 10em;\n height: 3em;\n flex: 1;\n text-align: center;\n display: inline-block;\n margin: 5px;\n border: 2px solid #ebeef5;\n box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);\n border-radius: 8px;\n padding: 10px\n}\n.friends-item-img {\n -o-object-fit: contain;\n object-fit: contain;\n max-width: 150px!important;\n height: 100%\n}\n/*a {*/\n/* font-weight: 500;*/\n/* text-decoration: none*/\n/*}*/\n/*a,p a code {*/\n/*color: #4274f4*/\n/*}*/\n/*p a code {*/\n/*font-weight: 400*/\n/*}*/\n")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/7.df78e3fb.js b/assets/js/7.df78e3fb.js new file mode 100644 index 00000000..6b9cb0d1 --- /dev/null +++ b/assets/js/7.df78e3fb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{372:function(e,t,_){"use strict";_.r(t);var v=_(14),s=Object(v.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("提示")]),e._v(" "),t("p",[e._v("当前最新版本:2.0.2。从之前的版本升级过来,请参照:更新记录 > 版本记录.")])]),e._v(" "),t("h2",{attrs:{id:"_1、快速上手须知"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、快速上手须知"}},[e._v("#")]),e._v(" 1、快速上手须知")]),e._v(" "),t("ul",[t("li",[e._v("所谓快速上手,就是针对从来没用过的新手编写的、快速完成从安装部署到首次使用的最简化流程")]),e._v(" "),t("li",[e._v("该流程中请严格按照说明步骤执行,不要靠猜测自作聪明的修改配置")]),e._v(" "),t("li",[e._v("如果的确需要修改,请先把安装部署、使用须知、常见问题全部仔细读一遍")]),e._v(" "),t("li",[e._v("快速上手中涉及到的配置,仅仅是快速体验所必须的配置,完整的配置请参照使用须知中的"),t("code",[e._v("服务端配置")]),e._v("、"),t("code",[e._v("客户端配置")])])]),e._v(" "),t("h2",{attrs:{id:"_2、部署服务"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务"}},[e._v("#")]),e._v(" 2、部署服务")]),e._v(" "),t("ul",[t("li",[e._v("根据需要自行选择jar、docker、原生部署、docker-compose任意一种完成部署,分别参见对应的文档")]),e._v(" "),t("li",[e._v("任何一种部署方式,不要求客户端与服务端一致。如:服务端采用docker部署,客户端可以用docker部署、也可以用jar、原生部署")]),e._v(" "),t("li",[e._v("管理后台说明\n"),t("ul",[t("li",[e._v("服务端部署成功后,访问http://{服务端IP}:8888打开后台管理页面。使用默认的管理员帐号登录:admin/123456")]),e._v(" "),t("li",[e._v("打开代理配置>License管理页面,可以看到系统已经自动为管理员初始化了一条License记录,复制该LicenseKey备用,后续客户端配置需要。")])])]),e._v(" "),t("li",[e._v("客户端说明\n"),t("ul",[t("li",[e._v("客户端启动后,查看服务端License管理,刷新页面,对应的License在线状态为"),t("code",[e._v("在线")]),e._v(",则表明客户端已正常连接。")])])])]),e._v(" "),t("h2",{attrs:{id:"_3、代理验证"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3、代理验证"}},[e._v("#")]),e._v(" 3、代理验证")]),e._v(" "),t("ul",[t("li",[e._v("本地启动被代理服务,如:redis、本地web项目、本地mysql等等,假设被代理服务端口为:8080")]),e._v(" "),t("li",[e._v("先确保本地能正常访问被代理服务,如果本地都不能访问,不用想代理更不可能!!!")]),e._v(" "),t("li",[e._v("服务端管理后台端口映射管理,使用默认的licesne创建一条端口映射,如:9101 -> 127.0.0.1:8080")]),e._v(" "),t("li",[e._v("通过服务端IP+9101(上面License配置的端口映射重的服务端端口)访问本地被代理服务")])]),e._v(" "),t("p",[e._v("访问成功,至此首次完整的内网穿透体验完成。开源不易,请速至"),t("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gitee仓库"),t("OutboundLink")],1),e._v("一键三连🤝")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/8.e3e55472.js b/assets/js/8.e3e55472.js new file mode 100644 index 00000000..de1bf49a --- /dev/null +++ b/assets/js/8.e3e55472.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{373:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"_1、环境准备"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1、环境准备"}},[t._v("#")]),t._v(" 1、环境准备")]),t._v(" "),s("ul",[s("li",[t._v("首先确保已安装Java21运行环境")]),t._v(" "),s("li",[t._v("打开"),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发行版页面"),s("OutboundLink")],1),t._v(",下载最新的release包:"),s("code",[t._v("neutrino-proxy-server-jdk21-2.0.2-jar.zip")]),t._v("、"),s("code",[t._v("neutrino-proxy-client-jdk21-2.0.2-jar.zip")])])]),t._v(" "),s("h2",{attrs:{id:"_2、部署服务端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务端"}},[t._v("#")]),t._v(" 2、部署服务端")]),t._v(" "),s("ul",[s("li",[t._v("在服务器上新建部署目录:"),s("code",[t._v("/work/projects/neutrino-proxy-server")])]),t._v(" "),s("li",[t._v("将"),s("code",[t._v("neutrino-proxy-server-jdk21-2.0.2-jar.zip")]),t._v("上传至服务器部署目录,并解压")]),t._v(" "),s("li",[t._v("执行命令"),s("code",[t._v("java -Dfile.encoding=utf-8 -jar neutrino-proxy-server.jar")]),t._v("启动服务端完成部署,默认使用h2数据库。")]),t._v(" "),s("li",[t._v("若需要指定自己的mysql数据库,则需要在当前目录下的"),s("code",[t._v("app.yml")]),t._v("文件中,修改数据库配置如下:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mysql\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("mysql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxxx"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("3306/neutrino"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("proxy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("?")]),t._v("useUnicode=true"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("driver-class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" com.mysql.jdbc.Driver\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库帐号")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n")])])]),s("ul",[s("li",[t._v("可参照 https://gitee.com/dromara/neutrino-proxy/blob/master/scripts/unix/server_start.sh 使用shell脚本启动服务端。")])]),t._v(" "),s("h2",{attrs:{id:"_3、部署客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3、部署客户端"}},[t._v("#")]),t._v(" 3、部署客户端")]),t._v(" "),s("ul",[s("li",[t._v("本地解压"),s("code",[t._v("neutrino-proxy-client-jdk21-2.0.2-jar.zip")]),t._v("文件")]),t._v(" "),s("li",[t._v("修改"),s("code",[t._v("app.yml")]),t._v("文件中的server-ip为服务器公网ip,并配置license-key,以下是相关的部分配置:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用ssl")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n")])])]),s("ul",[s("li",[t._v("执行命令"),s("code",[t._v("java -jar neutrino-proxy-client.jar")]),t._v("启动客户端")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/9.cc059fee.js b/assets/js/9.cc059fee.js new file mode 100644 index 00000000..bbf46112 --- /dev/null +++ b/assets/js/9.cc059fee.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{374:function(a,t,s){"use strict";s.r(t);var e=s(14),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"_1、-部署服务端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、-部署服务端"}},[a._v("#")]),a._v(" 1、 部署服务端")]),a._v(" "),t("ul",[t("li",[a._v("dockerHub镜像地址:aoshiguchen/neutrino-proxy-server:latest")]),a._v(" "),t("li",[a._v("阿里云镜像地址:registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest")])]),a._v(" "),t("h3",{attrs:{id:"使用默认h2数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认h2数据库一键部署"}},[a._v("#")]),a._v(" 使用默认h2数据库一键部署")]),a._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("docker")]),a._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-it")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-p")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("9000")]),a._v("-9200:9000-9200/tcp "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-p")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("8888")]),a._v(":8888 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-d")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--restart")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("always "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--name")]),a._v(" neutrino-proxy "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/config:/root/neutrino-proxy/config "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/data:/root/neutrino-proxy/data "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/logs:/root/neutrino-proxy/logs "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\naoshiguchen/neutrino-proxy-server:latest\n")])])]),t("h3",{attrs:{id:"指定自己的mysql数据库"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#指定自己的mysql数据库"}},[a._v("#")]),a._v(" 指定自己的mysql数据库")]),a._v(" "),t("ul",[t("li",[a._v("在服务器上创建目录:/root/neutrino-proxy/config")]),a._v(" "),t("li",[a._v("在该目录下创建"),t("code",[a._v("app.yml")]),a._v("文本文件,并配置如下内容:")])]),a._v(" "),t("div",{staticClass:"language-yml extra-class"},[t("pre",{pre:!0,attrs:{class:"language-yml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("neutrino")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("data")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("db")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" mysql\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("url")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" jdbc"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("//xxxx"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("3306/neutrino"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("proxy"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("?")]),a._v("useUnicode=true"),t("span",{pre:!0,attrs:{class:"token important"}},[a._v("&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("driver-class")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" com.mysql.jdbc.Driver\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 数据库帐号")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("username")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" xxx\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 数据库密码")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" xxx\n")])])]),t("ul",[t("li",[a._v("然后再执行上面的docker一键部署命令即可")])]),a._v(" "),t("h2",{attrs:{id:"_2、部署客户端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署客户端"}},[a._v("#")]),a._v(" 2、部署客户端")]),a._v(" "),t("ul",[t("li",[a._v("dockerHub镜像地址:aoshiguchen/neutrino-proxy-client:latest")]),a._v(" "),t("li",[a._v("阿里云镜像地址:registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy-client:latest")]),a._v(" "),t("li",[a._v("命令中的服务端ip、license请自行补充")]),a._v(" "),t("li",[a._v("若是首次使用,请仔细阅读快速上手,以确定license从哪里取得")])]),a._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("docker")]),a._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-it")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-d")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--restart")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("always "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--name")]),a._v(" npclient "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-e")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("xxxx "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-e")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LICENSE_KEY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("xxxx "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\naoshiguchen/neutrino-proxy-client:latest\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.26329228.js b/assets/js/app.26329228.js new file mode 100644 index 00000000..573aa3dd --- /dev/null +++ b/assets/js/app.26329228.js @@ -0,0 +1,10 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function n(n){for(var r,a,s=n[0],c=n[1],l=n[2],p=0,d=[];pfunction e(n,t,r,o=1){if("string"==typeof n)return f(t,n,r);if(Array.isArray(n))return Object.assign(f(t,n[0],r),{title:n[1]});{o>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const i=n.children||[];return 0===i.length&&n.path?Object.assign(f(t,n.path,r),{title:n.title}):{type:"group",path:n.path,title:n.title,sidebarDepth:n.sidebarDepth,initialOpenGroupIndex:n.initialOpenGroupIndex,children:i.map(n=>e(n,t,r,o+1)),collapsable:!1!==n.collapsable}}}(e,o,t)):[]}return[]}function v(e){const n=m(e.headers||[]);return[{type:"group",collapsable:!1,title:e.title,path:null,children:n.map(n=>({type:"auto",title:n.title,basePath:e.path,path:e.path+"#"+n.slug,children:n.children||[]}))}]}function m(e){let n;return(e=e.map(e=>Object.assign({},e))).forEach(e=>{2===e.level?n=e:n&&(n.children||(n.children=[])).push(e)}),e.filter(e=>2===e.level)}function g(e){return Object.assign(e,{type:e.items&&e.items.length?"links":"link"})}function y(e){return Object.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase()}function b(e){let n=e.frontmatter.date||e.lastUpdated||new Date,t=new Date(n);return"Invalid Date"==t&&n&&(t=new Date(n.replace(/-/g,"/"))),t.getTime()}function x(e,n){return b(n)-b(e)}},function(e,n,t){"use strict";t(151)},function(e,n){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,n,t){"use strict";e.exports=!1},function(e,n,t){"use strict";var r=t(6),o=t(17),i=t(33);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n,t){"use strict";e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},function(e,n,t){var r=t(28),o=t(184),i=t(185),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},function(e,n,t){"use strict";var r=t(5),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},function(e,n,t){var r=t(13).Symbol;e.exports=r},function(e,n,t){"use strict";var r=t(10),o=t(30),i=t(31),a=t(178),s=t(180);r({target:"Array",proto:!0,arity:1,forced:t(3)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var n=o(this),t=i(n),r=arguments.length;s(t+r);for(var c=0;c
'};function o(e,n,t){return et?t:e}function i(e){return 100*(-1+e)}t.configure=function(e){var n,t;for(n in e)void 0!==(t=e[n])&&e.hasOwnProperty(n)&&(r[n]=t);return this},t.status=null,t.set=function(e){var n=t.isStarted();e=o(e,r.minimum,1),t.status=1===e?null:e;var c=t.render(!n),l=c.querySelector(r.barSelector),u=r.speed,p=r.easing;return c.offsetWidth,a((function(n){""===r.positionUsing&&(r.positionUsing=t.getPositioningCSS()),s(l,function(e,n,t){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+n+"ms "+t,o}(e,u,p)),1===e?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){t.remove(),n()}),u)}),u)):setTimeout(n,u)})),this},t.isStarted=function(){return"number"==typeof t.status},t.start=function(){t.status||t.set(0);var e=function(){setTimeout((function(){t.status&&(t.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},t.done=function(e){return e||t.status?t.inc(.3+.5*Math.random()).set(1):this},t.inc=function(e){var n=t.status;return n?("number"!=typeof e&&(e=(1-n)*o(Math.random()*n,.1,.95)),n=o(n+e,0,.994),t.set(n)):t.start()},t.trickle=function(){return t.inc(Math.random()*r.trickleRate)},e=0,n=0,t.promise=function(r){return r&&"resolved"!==r.state()?(0===n&&t.start(),e++,n++,r.always((function(){0==--n?(e=0,t.done()):t.set((e-n)/e)})),this):this},t.render=function(e){if(t.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var n=document.createElement("div");n.id="nprogress",n.innerHTML=r.template;var o,a=n.querySelector(r.barSelector),c=e?"-100":i(t.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=n.querySelector(r.spinnerSelector))&&d(o),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(n),n},t.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},t.isRendered=function(){return!!document.getElementById("nprogress")},t.getPositioningCSS=function(){var e=document.body.style,n="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return n+"Perspective"in e?"translate3d":n+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function n(){var t=e.shift();t&&t(n)}return function(t){e.push(t),1==e.length&&n()}}(),s=function(){var e=["Webkit","O","Moz","ms"],n={};function t(t){return t=t.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,n){return n.toUpperCase()})),n[t]||(n[t]=function(n){var t=document.body.style;if(n in t)return n;for(var r,o=e.length,i=n.charAt(0).toUpperCase()+n.slice(1);o--;)if((r=e[o]+i)in t)return r;return n}(t))}function r(e,n,r){n=t(n),e.style[n]=r}return function(e,n){var t,o,i=arguments;if(2==i.length)for(t in n)void 0!==(o=n[t])&&n.hasOwnProperty(t)&&r(e,t,o);else r(e,i[1],i[2])}}();function c(e,n){return("string"==typeof e?e:p(e)).indexOf(" "+n+" ")>=0}function l(e,n){var t=p(e),r=t+n;c(t,n)||(e.className=r.substring(1))}function u(e,n){var t,r=p(e);c(e,n)&&(t=r.replace(" "+n+" "," "),e.className=t.substring(1,t.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return t})?r.call(n,t,n,e):r)||(e.exports=o)},function(e,n,t){"use strict";var r=t(0),o=t(17),i=t(81),a=t(50);e.exports=function(e,n,t,s){s||(s={});var c=s.enumerable,l=void 0!==s.name?s.name:n;if(r(t)&&i(t,l,s),s.global)c?e[n]=t:a(n,t);else{try{s.unsafe?e[n]&&(c=!0):delete e[n]}catch(e){}c?e[n]=t:o.f(e,n,{value:t,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},function(e,n,t){"use strict";var r=t(124),o=t(12),i=t(1),a=t(48),s=t(160),c=t(31),l=t(36),u=t(161),p=t(91),d=t(54),f=TypeError,h=function(e,n){this.stopped=e,this.result=n},v=h.prototype;e.exports=function(e,n,t){var m,g,y,b,x,_,w,E=t&&t.that,k=!(!t||!t.AS_ENTRIES),T=!(!t||!t.IS_RECORD),C=!(!t||!t.IS_ITERATOR),j=!(!t||!t.INTERRUPTED),S=r(n,E),A=function(e){return m&&d(m,"normal",e),new h(!0,e)},O=function(e){return k?(i(e),j?S(e[0],e[1],A):S(e[0],e[1])):j?S(e,A):S(e)};if(T)m=e.iterator;else if(C)m=e;else{if(!(g=p(e)))throw new f(a(e)+" is not iterable");if(s(g)){for(y=0,b=c(e);b>y;y++)if((x=O(e[y]))&&l(v,x))return x;return new h(!1)}m=u(e,g)}for(_=T?e.next:m.next;!(w=o(_,m)).done;){try{x=O(w.value)}catch(e){d(m,"throw",e)}if("object"==typeof x&&x&&l(v,x))return x}return new h(!1)}},function(e,n,t){"use strict";var r=t(47),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,n,t){"use strict";e.exports=function(e){return null==e}},function(e,n,t){"use strict";var r=String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},function(e,n,t){"use strict";var r=t(23),o=t(2),i=t(50),a=e.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(a.versions||(a.versions=[])).push({version:"3.39.0",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,n,t){"use strict";var r=t(2),o=Object.defineProperty;e.exports=function(e,n){try{o(r,e,{value:n,configurable:!0,writable:!0})}catch(t){r[e]=n}return n}},function(e,n,t){"use strict";var r=t(76),o=t(77),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,n,t){"use strict";e.exports={}},function(e,n,t){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,t){"use strict";var r=t(12),o=t(1),i=t(37);e.exports=function(e,n,t){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){s=!0,a=e}if("throw"===n)throw t;if(s)throw a;return o(a),t}},function(e,n,t){var r=t(183),o=t(22),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},function(e,n,t){var r=t(19)(t(13),"Map");e.exports=r},function(e,n){e.exports=function(e){var n=typeof e;return null!=e&&("object"==n||"function"==n)}},function(e,n,t){var r=t(203),o=t(210),i=t(212),a=t(213),s=t(214);function c(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n-1&&e%1==0&&e<=9007199254740991}},function(e,n,t){var r=t(11),o=t(62),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,n){if(r(e))return!1;var t=typeof e;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=n&&e in Object(n))}},function(e,n,t){var r=t(26),o=t(22);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,n){e.exports=function(e){return e}},function(e,n,t){"use strict";t(275)},function(e,n,t){"use strict";var r=t(5),o=t(3),i=t(27),a=Object,s=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},function(e,n,t){"use strict";var r,o=t(1),i=t(145),a=t(53),s=t(52),c=t(147),l=t(79),u=t(51),p=u("IE_PROTO"),d=function(){},f=function(e){return" + + diff --git a/img/Apifox-2.png b/img/Apifox-2.png new file mode 100644 index 00000000..bf5f9c3c Binary files /dev/null and b/img/Apifox-2.png differ diff --git a/img/Apifox-860x320.png b/img/Apifox-860x320.png new file mode 100644 index 00000000..a51315c6 Binary files /dev/null and b/img/Apifox-860x320.png differ diff --git a/img/bg.jpeg b/img/bg.jpeg new file mode 100644 index 00000000..85e53e7d Binary files /dev/null and b/img/bg.jpeg differ diff --git a/img/bg.jpg b/img/bg.jpg new file mode 100644 index 00000000..f093e799 Binary files /dev/null and b/img/bg.jpg differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 00000000..f7240fb6 Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/gif/猫1.gif b/img/gif/猫1.gif new file mode 100644 index 00000000..e84d8a28 Binary files /dev/null and b/img/gif/猫1.gif differ diff --git a/img/gif/猫2.gif b/img/gif/猫2.gif new file mode 100644 index 00000000..28114599 Binary files /dev/null and b/img/gif/猫2.gif differ diff --git a/img/gif/猫3.gif b/img/gif/猫3.gif new file mode 100644 index 00000000..894372d9 Binary files /dev/null and b/img/gif/猫3.gif differ diff --git a/img/gif/猫4.gif b/img/gif/猫4.gif new file mode 100644 index 00000000..7b991309 Binary files /dev/null and b/img/gif/猫4.gif differ diff --git a/img/logo-0.75x.png b/img/logo-0.75x.png new file mode 100644 index 00000000..de120681 Binary files /dev/null and b/img/logo-0.75x.png differ diff --git a/img/logo-text-cross.png b/img/logo-text-cross.png new file mode 100644 index 00000000..8ab9a6e8 Binary files /dev/null and b/img/logo-text-cross.png differ diff --git a/img/logo-text-vertical.png b/img/logo-text-vertical.png new file mode 100644 index 00000000..adf383aa Binary files /dev/null and b/img/logo-text-vertical.png differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 00000000..bd7eec17 Binary files /dev/null and b/img/logo.png differ diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 00000000..1b62fe13 --- /dev/null +++ b/img/logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/img/logo/Disjob.png b/img/logo/Disjob.png new file mode 100644 index 00000000..a239a7aa Binary files /dev/null and b/img/logo/Disjob.png differ diff --git a/img/logo/RuoYi-Cloud-Plus.png b/img/logo/RuoYi-Cloud-Plus.png new file mode 100644 index 00000000..cc697e6d Binary files /dev/null and b/img/logo/RuoYi-Cloud-Plus.png differ diff --git a/img/logo/RuoYi-Vue-Plus.png b/img/logo/RuoYi-Vue-Plus.png new file mode 100644 index 00000000..d0eba10d Binary files /dev/null and b/img/logo/RuoYi-Vue-Plus.png differ diff --git a/img/logo/SMSAggregation.png b/img/logo/SMSAggregation.png new file mode 100644 index 00000000..a289dd37 Binary files /dev/null and b/img/logo/SMSAggregation.png differ diff --git a/img/logo/bean-searcher.png b/img/logo/bean-searcher.png new file mode 100644 index 00000000..cc451e9b Binary files /dev/null and b/img/logo/bean-searcher.png differ diff --git a/img/logo/chatgpt.png b/img/logo/chatgpt.png new file mode 100644 index 00000000..9620509e Binary files /dev/null and b/img/logo/chatgpt.png differ diff --git a/img/logo/cloudeon.png b/img/logo/cloudeon.png new file mode 100644 index 00000000..84152ff1 Binary files /dev/null and b/img/logo/cloudeon.png differ diff --git a/img/logo/cubic.png b/img/logo/cubic.png new file mode 100644 index 00000000..a5391dac Binary files /dev/null and b/img/logo/cubic.png differ diff --git a/img/logo/dante-cloud.jpg b/img/logo/dante-cloud.jpg new file mode 100644 index 00000000..c678bc17 Binary files /dev/null and b/img/logo/dante-cloud.jpg differ diff --git a/img/logo/dante-cloud.png b/img/logo/dante-cloud.png new file mode 100644 index 00000000..e6a27e0a Binary files /dev/null and b/img/logo/dante-cloud.png differ diff --git a/img/logo/dante-cloud2.png b/img/logo/dante-cloud2.png new file mode 100644 index 00000000..4dfbbb01 Binary files /dev/null and b/img/logo/dante-cloud2.png differ diff --git a/img/logo/dataCompare.png b/img/logo/dataCompare.png new file mode 100644 index 00000000..12e6cfff Binary files /dev/null and b/img/logo/dataCompare.png differ diff --git a/img/logo/dromara.png b/img/logo/dromara.png new file mode 100644 index 00000000..0833b2fa Binary files /dev/null and b/img/logo/dromara.png differ diff --git a/img/logo/dynamic-tp.png b/img/logo/dynamic-tp.png new file mode 100644 index 00000000..4c91c5b4 Binary files /dev/null and b/img/logo/dynamic-tp.png differ diff --git a/img/logo/easy-es.png b/img/logo/easy-es.png new file mode 100644 index 00000000..ed4ec7b7 Binary files /dev/null and b/img/logo/easy-es.png differ diff --git a/img/logo/easy-es2.png b/img/logo/easy-es2.png new file mode 100644 index 00000000..c42176fe Binary files /dev/null and b/img/logo/easy-es2.png differ diff --git a/img/logo/easy_trans.png b/img/logo/easy_trans.png new file mode 100644 index 00000000..e2beb7fe Binary files /dev/null and b/img/logo/easy_trans.png differ diff --git a/img/logo/electron-egg.png b/img/logo/electron-egg.png new file mode 100644 index 00000000..95dc60bb Binary files /dev/null and b/img/logo/electron-egg.png differ diff --git a/img/logo/fast-request.gif b/img/logo/fast-request.gif new file mode 100644 index 00000000..17e9e4d0 Binary files /dev/null and b/img/logo/fast-request.gif differ diff --git a/img/logo/fast-request.png b/img/logo/fast-request.png new file mode 100644 index 00000000..3089d262 Binary files /dev/null and b/img/logo/fast-request.png differ diff --git a/img/logo/forest-logo.png b/img/logo/forest-logo.png new file mode 100644 index 00000000..6db8032c Binary files /dev/null and b/img/logo/forest-logo.png differ diff --git a/img/logo/go-view.png b/img/logo/go-view.png new file mode 100644 index 00000000..df5c9ce6 Binary files /dev/null and b/img/logo/go-view.png differ diff --git a/img/logo/gobrs-async.png b/img/logo/gobrs-async.png new file mode 100644 index 00000000..028592ca Binary files /dev/null and b/img/logo/gobrs-async.png differ diff --git a/img/logo/hertzbeat-brand.svg b/img/logo/hertzbeat-brand.svg new file mode 100644 index 00000000..2f87962d --- /dev/null +++ b/img/logo/hertzbeat-brand.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/img/logo/hertzbeat_brand.jpg b/img/logo/hertzbeat_brand.jpg new file mode 100644 index 00000000..fafd1d80 Binary files /dev/null and b/img/logo/hertzbeat_brand.jpg differ diff --git a/img/logo/hippo4j.jpg b/img/logo/hippo4j.jpg new file mode 100644 index 00000000..ea9198ca Binary files /dev/null and b/img/logo/hippo4j.jpg differ diff --git a/img/logo/hmily.png b/img/logo/hmily.png new file mode 100644 index 00000000..719535dd Binary files /dev/null and b/img/logo/hmily.png differ diff --git a/img/logo/hodor.png b/img/logo/hodor.png new file mode 100644 index 00000000..78254a5c Binary files /dev/null and b/img/logo/hodor.png differ diff --git a/img/logo/hutool.jpg b/img/logo/hutool.jpg new file mode 100644 index 00000000..52a358bb Binary files /dev/null and b/img/logo/hutool.jpg differ diff --git a/img/logo/image-combiner.png b/img/logo/image-combiner.png new file mode 100644 index 00000000..9b3351a4 Binary files /dev/null and b/img/logo/image-combiner.png differ diff --git a/img/logo/j2eefast.png b/img/logo/j2eefast.png new file mode 100644 index 00000000..a6d3c5ca Binary files /dev/null and b/img/logo/j2eefast.png differ diff --git a/img/logo/jpom.png b/img/logo/jpom.png new file mode 100644 index 00000000..10b1723c Binary files /dev/null and b/img/logo/jpom.png differ diff --git a/img/logo/jpom.svg b/img/logo/jpom.svg new file mode 100644 index 00000000..84ef7eff --- /dev/null +++ b/img/logo/jpom.svg @@ -0,0 +1,40 @@ + + + jpom-logo + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/logo/koalas-rpc.png b/img/logo/koalas-rpc.png new file mode 100644 index 00000000..f8602592 Binary files /dev/null and b/img/logo/koalas-rpc.png differ diff --git a/img/logo/koalas-rpc2.png b/img/logo/koalas-rpc2.png new file mode 100644 index 00000000..4aa683e5 Binary files /dev/null and b/img/logo/koalas-rpc2.png differ diff --git a/img/logo/lamp-cloud.png b/img/logo/lamp-cloud.png new file mode 100644 index 00000000..b7e39921 Binary files /dev/null and b/img/logo/lamp-cloud.png differ diff --git a/img/logo/layui-vue.png b/img/logo/layui-vue.png new file mode 100644 index 00000000..18a1047a Binary files /dev/null and b/img/logo/layui-vue.png differ diff --git a/img/logo/liteflow-old.png b/img/logo/liteflow-old.png new file mode 100644 index 00000000..4c87377e Binary files /dev/null and b/img/logo/liteflow-old.png differ diff --git a/img/logo/liteflow.png b/img/logo/liteflow.png new file mode 100644 index 00000000..9b9b830d Binary files /dev/null and b/img/logo/liteflow.png differ diff --git a/img/logo/mall4j.png b/img/logo/mall4j.png new file mode 100644 index 00000000..ecf5ee7c Binary files /dev/null and b/img/logo/mall4j.png differ diff --git a/img/logo/maxkey.png b/img/logo/maxkey.png new file mode 100644 index 00000000..df747614 Binary files /dev/null and b/img/logo/maxkey.png differ diff --git a/img/logo/mendmix.png b/img/logo/mendmix.png new file mode 100644 index 00000000..7b94d4ed Binary files /dev/null and b/img/logo/mendmix.png differ diff --git a/img/logo/mybatis-plus.png b/img/logo/mybatis-plus.png new file mode 100644 index 00000000..c4460ea6 Binary files /dev/null and b/img/logo/mybatis-plus.png differ diff --git a/img/logo/myth.png b/img/logo/myth.png new file mode 100644 index 00000000..1fd418d3 Binary files /dev/null and b/img/logo/myth.png differ diff --git a/img/logo/neutrino-proxy.png b/img/logo/neutrino-proxy.png new file mode 100644 index 00000000..365d063b Binary files /dev/null and b/img/logo/neutrino-proxy.png differ diff --git a/img/logo/neutrino-proxy.svg b/img/logo/neutrino-proxy.svg new file mode 100644 index 00000000..08b3b02c --- /dev/null +++ b/img/logo/neutrino-proxy.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/logo/northstar_logo.png b/img/logo/northstar_logo.png new file mode 100644 index 00000000..bd975cb2 Binary files /dev/null and b/img/logo/northstar_logo.png differ diff --git a/img/logo/okhttps.png b/img/logo/okhttps.png new file mode 100644 index 00000000..d4dce780 Binary files /dev/null and b/img/logo/okhttps.png differ diff --git a/img/logo/open-capacity-platform.jpg b/img/logo/open-capacity-platform.jpg new file mode 100644 index 00000000..00ab06c2 Binary files /dev/null and b/img/logo/open-capacity-platform.jpg differ diff --git a/img/logo/open-capacity-platform.png b/img/logo/open-capacity-platform.png new file mode 100644 index 00000000..050f7cd8 Binary files /dev/null and b/img/logo/open-capacity-platform.png differ diff --git a/img/logo/open-giteye-api.svg b/img/logo/open-giteye-api.svg new file mode 100644 index 00000000..ade2545a --- /dev/null +++ b/img/logo/open-giteye-api.svg @@ -0,0 +1 @@ +资源 6 \ No newline at end of file diff --git a/img/logo/payment-spring-boot.png b/img/logo/payment-spring-boot.png new file mode 100644 index 00000000..18b837f9 Binary files /dev/null and b/img/logo/payment-spring-boot.png differ diff --git a/img/logo/pear-admin.png b/img/logo/pear-admin.png new file mode 100644 index 00000000..d1464b3f Binary files /dev/null and b/img/logo/pear-admin.png differ diff --git a/img/logo/raincat.png b/img/logo/raincat.png new file mode 100644 index 00000000..e19e0d47 Binary files /dev/null and b/img/logo/raincat.png differ diff --git a/img/logo/redis-front.png b/img/logo/redis-front.png new file mode 100644 index 00000000..5459fa0c Binary files /dev/null and b/img/logo/redis-front.png differ diff --git a/img/logo/sa-token-length-white.png b/img/logo/sa-token-length-white.png new file mode 100644 index 00000000..e30e183a Binary files /dev/null and b/img/logo/sa-token-length-white.png differ diff --git a/img/logo/sa-token.png b/img/logo/sa-token.png new file mode 100644 index 00000000..0192f1a4 Binary files /dev/null and b/img/logo/sa-token.png differ diff --git a/img/logo/shenyu.png b/img/logo/shenyu.png new file mode 100644 index 00000000..ad4a52d0 Binary files /dev/null and b/img/logo/shenyu.png differ diff --git a/img/logo/shenyu.svg b/img/logo/shenyu.svg new file mode 100644 index 00000000..62d9db7b --- /dev/null +++ b/img/logo/shenyu.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/img/logo/sms4j.png b/img/logo/sms4j.png new file mode 100644 index 00000000..8a364cd7 Binary files /dev/null and b/img/logo/sms4j.png differ diff --git a/img/logo/snowy2.png b/img/logo/snowy2.png new file mode 100644 index 00000000..b40e5dee Binary files /dev/null and b/img/logo/snowy2.png differ diff --git a/img/logo/solon.png b/img/logo/solon.png new file mode 100644 index 00000000..7c769594 Binary files /dev/null and b/img/logo/solon.png differ diff --git a/img/logo/solon_logo_500_150.png b/img/logo/solon_logo_500_150.png new file mode 100644 index 00000000..7c769594 Binary files /dev/null and b/img/logo/solon_logo_500_150.png differ diff --git a/img/logo/soul.png b/img/logo/soul.png new file mode 100644 index 00000000..a23d974f Binary files /dev/null and b/img/logo/soul.png differ diff --git a/img/logo/stream-query.png b/img/logo/stream-query.png new file mode 100644 index 00000000..635df5fd Binary files /dev/null and b/img/logo/stream-query.png differ diff --git a/img/logo/sureness.png b/img/logo/sureness.png new file mode 100644 index 00000000..7fdecb93 Binary files /dev/null and b/img/logo/sureness.png differ diff --git a/img/logo/test-hub.png b/img/logo/test-hub.png new file mode 100644 index 00000000..d5c8ddc5 Binary files /dev/null and b/img/logo/test-hub.png differ diff --git a/img/logo/tlog.png b/img/logo/tlog.png new file mode 100644 index 00000000..c5efeac2 Binary files /dev/null and b/img/logo/tlog.png differ diff --git a/img/logo/tlog2.png b/img/logo/tlog2.png new file mode 100644 index 00000000..0c0e9ae5 Binary files /dev/null and b/img/logo/tlog2.png differ diff --git a/img/logo/x-easypdf.png b/img/logo/x-easypdf.png new file mode 100644 index 00000000..8aa0af02 Binary files /dev/null and b/img/logo/x-easypdf.png differ diff --git a/img/logo/xiaonuo.png b/img/logo/xiaonuo.png new file mode 100644 index 00000000..941c507b Binary files /dev/null and b/img/logo/xiaonuo.png differ diff --git a/img/logo/xiaonuo2.png b/img/logo/xiaonuo2.png new file mode 100644 index 00000000..b40e5dee Binary files /dev/null and b/img/logo/xiaonuo2.png differ diff --git a/img/logo/zyplayer-doc.png b/img/logo/zyplayer-doc.png new file mode 100644 index 00000000..a9e29681 Binary files /dev/null and b/img/logo/zyplayer-doc.png differ diff --git a/img/more.png b/img/more.png new file mode 100644 index 00000000..830613ba Binary files /dev/null and b/img/more.png differ diff --git a/img/other.png b/img/other.png new file mode 100644 index 00000000..87f80989 Binary files /dev/null and b/img/other.png differ diff --git a/img/panda-waving.png b/img/panda-waving.png new file mode 100644 index 00000000..20246c60 Binary files /dev/null and b/img/panda-waving.png differ diff --git a/img/png/思维导图.png b/img/png/思维导图.png new file mode 100644 index 00000000..819ef70b Binary files /dev/null and b/img/png/思维导图.png differ diff --git a/img/png/数据库.png b/img/png/数据库.png new file mode 100644 index 00000000..4d13c3f2 Binary files /dev/null and b/img/png/数据库.png differ diff --git a/img/png/数据结构.png b/img/png/数据结构.png new file mode 100644 index 00000000..1bafe966 Binary files /dev/null and b/img/png/数据结构.png differ diff --git a/img/png/服务器.png b/img/png/服务器.png new file mode 100644 index 00000000..4127eb56 Binary files /dev/null and b/img/png/服务器.png differ diff --git a/img/png/机器学习.png b/img/png/机器学习.png new file mode 100644 index 00000000..081c2b88 Binary files /dev/null and b/img/png/机器学习.png differ diff --git a/img/png/算法.png b/img/png/算法.png new file mode 100644 index 00000000..92fef3f6 Binary files /dev/null and b/img/png/算法.png differ diff --git a/img/png/系统.png b/img/png/系统.png new file mode 100644 index 00000000..87f0de0a Binary files /dev/null and b/img/png/系统.png differ diff --git a/img/png/系统分析.png b/img/png/系统分析.png new file mode 100644 index 00000000..208e2597 Binary files /dev/null and b/img/png/系统分析.png differ diff --git a/img/png/编程.png b/img/png/编程.png new file mode 100644 index 00000000..a8bca769 Binary files /dev/null and b/img/png/编程.png differ diff --git a/img/png/网络技术.png b/img/png/网络技术.png new file mode 100644 index 00000000..f81edb71 Binary files /dev/null and b/img/png/网络技术.png differ diff --git a/img/png/计算机网络.png b/img/png/计算机网络.png new file mode 100644 index 00000000..63a1819f Binary files /dev/null and b/img/png/计算机网络.png differ diff --git a/img/png/软件开发.png b/img/png/软件开发.png new file mode 100644 index 00000000..72c5e852 Binary files /dev/null and b/img/png/软件开发.png differ diff --git a/img/png/面向对象.png b/img/png/面向对象.png new file mode 100644 index 00000000..cd13fa3c Binary files /dev/null and b/img/png/面向对象.png differ diff --git a/img/png/项目管理.png b/img/png/项目管理.png new file mode 100644 index 00000000..0467abd5 Binary files /dev/null and b/img/png/项目管理.png differ diff --git a/img/python.png b/img/python.png new file mode 100644 index 00000000..c3ddebeb Binary files /dev/null and b/img/python.png differ diff --git a/img/qrcode/gzh.jpg b/img/qrcode/gzh.jpg new file mode 100644 index 00000000..6d0f980c Binary files /dev/null and b/img/qrcode/gzh.jpg differ diff --git a/img/qrcode/qqq.webp b/img/qrcode/qqq.webp new file mode 100644 index 00000000..87940a5d Binary files /dev/null and b/img/qrcode/qqq.webp differ diff --git a/img/qrcode/wxq.png b/img/qrcode/wxq.png new file mode 100644 index 00000000..8a867cd3 Binary files /dev/null and b/img/qrcode/wxq.png differ diff --git a/img/qrcode/wxzs.jpg b/img/qrcode/wxzs.jpg new file mode 100644 index 00000000..67c90769 Binary files /dev/null and b/img/qrcode/wxzs.jpg differ diff --git a/img/qrcode/wxzz.jpg b/img/qrcode/wxzz.jpg new file mode 100644 index 00000000..53afbedc Binary files /dev/null and b/img/qrcode/wxzz.jpg differ diff --git a/img/qrcode/zfbzz.jpg b/img/qrcode/zfbzz.jpg new file mode 100644 index 00000000..b8f94c0b Binary files /dev/null and b/img/qrcode/zfbzz.jpg differ diff --git a/img/run-example/client-connect-log1.png b/img/run-example/client-connect-log1.png new file mode 100644 index 00000000..361956e5 Binary files /dev/null and b/img/run-example/client-connect-log1.png differ diff --git a/img/run-example/client-run1.png b/img/run-example/client-run1.png new file mode 100644 index 00000000..70617015 Binary files /dev/null and b/img/run-example/client-run1.png differ diff --git a/img/run-example/home.png b/img/run-example/home.png new file mode 100644 index 00000000..524e0a3a Binary files /dev/null and b/img/run-example/home.png differ diff --git a/img/run-example/job-log1.png b/img/run-example/job-log1.png new file mode 100644 index 00000000..4e87eedb Binary files /dev/null and b/img/run-example/job-log1.png differ diff --git a/img/run-example/job-manager1.png b/img/run-example/job-manager1.png new file mode 100644 index 00000000..3e174bf1 Binary files /dev/null and b/img/run-example/job-manager1.png differ diff --git a/img/run-example/license-flow-month1.png b/img/run-example/license-flow-month1.png new file mode 100644 index 00000000..76f39b99 Binary files /dev/null and b/img/run-example/license-flow-month1.png differ diff --git a/img/run-example/license-flow1.png b/img/run-example/license-flow1.png new file mode 100644 index 00000000..7caedbc4 Binary files /dev/null and b/img/run-example/license-flow1.png differ diff --git a/img/run-example/license1.png b/img/run-example/license1.png new file mode 100644 index 00000000..07d00748 Binary files /dev/null and b/img/run-example/license1.png differ diff --git a/img/run-example/license2.png b/img/run-example/license2.png new file mode 100644 index 00000000..613f9acc Binary files /dev/null and b/img/run-example/license2.png differ diff --git a/img/run-example/login-log1.png b/img/run-example/login-log1.png new file mode 100644 index 00000000..73d97036 Binary files /dev/null and b/img/run-example/login-log1.png differ diff --git a/img/run-example/neutrino-proxy-process.jpg b/img/run-example/neutrino-proxy-process.jpg new file mode 100644 index 00000000..83550a6a Binary files /dev/null and b/img/run-example/neutrino-proxy-process.jpg differ diff --git a/img/run-example/port-group1.png b/img/run-example/port-group1.png new file mode 100644 index 00000000..3c2acaaa Binary files /dev/null and b/img/run-example/port-group1.png differ diff --git a/img/run-example/port-mapping1.png b/img/run-example/port-mapping1.png new file mode 100644 index 00000000..9e44009d Binary files /dev/null and b/img/run-example/port-mapping1.png differ diff --git a/img/run-example/port-mapping2.png b/img/run-example/port-mapping2.png new file mode 100644 index 00000000..4b326eb9 Binary files /dev/null and b/img/run-example/port-mapping2.png differ diff --git a/img/run-example/port-pool1.png b/img/run-example/port-pool1.png new file mode 100644 index 00000000..0400e2e9 Binary files /dev/null and b/img/run-example/port-pool1.png differ diff --git a/img/run-example/question_3_1.png b/img/run-example/question_3_1.png new file mode 100644 index 00000000..8f4a01ab Binary files /dev/null and b/img/run-example/question_3_1.png differ diff --git a/img/run-example/security-group1.png b/img/run-example/security-group1.png new file mode 100644 index 00000000..88180fa5 Binary files /dev/null and b/img/run-example/security-group1.png differ diff --git a/img/run-example/security-rule1.png b/img/run-example/security-rule1.png new file mode 100644 index 00000000..2fb87cb5 Binary files /dev/null and b/img/run-example/security-rule1.png differ diff --git a/img/run-example/user-flow-month1.png b/img/run-example/user-flow-month1.png new file mode 100644 index 00000000..0b6254e3 Binary files /dev/null and b/img/run-example/user-flow-month1.png differ diff --git a/img/run-example/user-flow1.png b/img/run-example/user-flow1.png new file mode 100644 index 00000000..daa0eaa2 Binary files /dev/null and b/img/run-example/user-flow1.png differ diff --git a/img/run-example/user-manager1.png b/img/run-example/user-manager1.png new file mode 100644 index 00000000..7afd7dae Binary files /dev/null and b/img/run-example/user-manager1.png differ diff --git a/img/sponsor/7bu.ico b/img/sponsor/7bu.ico new file mode 100644 index 00000000..7dc50635 Binary files /dev/null and b/img/sponsor/7bu.ico differ diff --git a/img/sponsor/xigexiaobao.jpg b/img/sponsor/xigexiaobao.jpg new file mode 100644 index 00000000..d4a05b9a Binary files /dev/null and b/img/sponsor/xigexiaobao.jpg differ diff --git a/img/sponsor/zyplayer-doc.jpg b/img/sponsor/zyplayer-doc.jpg new file mode 100644 index 00000000..379224c1 Binary files /dev/null and b/img/sponsor/zyplayer-doc.jpg differ diff --git a/img/sponsor/zyplayer-doc.png b/img/sponsor/zyplayer-doc.png new file mode 100644 index 00000000..ba6ef621 Binary files /dev/null and b/img/sponsor/zyplayer-doc.png differ diff --git a/img/ui.png b/img/ui.png new file mode 100644 index 00000000..617c56d7 Binary files /dev/null and b/img/ui.png differ diff --git a/img/web.png b/img/web.png new file mode 100644 index 00000000..0a6e27c4 Binary files /dev/null and b/img/web.png differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..ed8f1953 --- /dev/null +++ b/index.html @@ -0,0 +1,99 @@ + + + + + + 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/markmap/01.html b/markmap/01.html new file mode 100644 index 00000000..a3bc2d1b --- /dev/null +++ b/markmap/01.html @@ -0,0 +1,126 @@ + + + + + + + + Markmap + + + + + + + + + + + + diff --git a/neutrino-proxy/404.html b/neutrino-proxy/404.html new file mode 100644 index 00000000..009fce85 --- /dev/null +++ b/neutrino-proxy/404.html @@ -0,0 +1,21 @@ + + + + + + 中微子代理 + + + + + + + + + + + +
404
这是一个Four-Oh-Four.
返回首页
+ + + diff --git a/neutrino-proxy/CNAME b/neutrino-proxy/CNAME new file mode 100644 index 00000000..fbda1303 --- /dev/null +++ b/neutrino-proxy/CNAME @@ -0,0 +1 @@ +neutrino-proxy.dromara.org \ No newline at end of file diff --git a/neutrino-proxy/assets/css/0.styles.b79d758c.css b/neutrino-proxy/assets/css/0.styles.b79d758c.css new file mode 100644 index 00000000..b7e39047 --- /dev/null +++ b/neutrino-proxy/assets/css/0.styles.b79d758c.css @@ -0,0 +1 @@ +@import url(//at.alicdn.com/t/font_1678482_4tbhmh589x.css);.code-copy{color:#aaa;fill:#aaa;font-size:14px;display:inline-block;cursor:pointer}div[class*=aside-code] aside .code-copy,div[class*=language-] pre .code-copy{position:absolute;z-index:1000;top:7px;right:35px;opacity:0;font-size:16px}div[class*=aside-code] aside:hover .code-copy,div[class*=language-] pre:hover .code-copy{opacity:1}.content pre,.content pre[class*=language-]{overflow-y:hidden}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{position:static!important}div[class~=language-text]:before{content:"text"}div[class~=language-yml]:before{content:"yml"}div[class*=language-] pre{-webkit-user-select:text;-moz-user-select:text;user-select:text}p code{-webkit-user-select:all;-moz-user-select:all;user-select:all}@keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}#message-container .message.move-in{animation:message-move-in .3s ease-in-out}@keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}#message-container .message.move-out{animation:message-move-out .3s ease-in-out;animation-fill-mode:forwards}#message-container .message{background:#fff;margin:10px 0;padding:0 10px;height:40px;box-shadow:0 0 10px 0 #ccc;font-size:14px;border-radius:3px;display:flex;align-items:center;transition:height .2s ease-in-out,margin .2s ease-in-out}#message-container{position:fixed;left:0;top:100px;right:0;display:flex;flex-direction:column;align-items:center}#message-container .message .text{color:#333;padding:0 20px 0 5px}.theme-code-block[data-v-4f1e9d0c]{display:none}.theme-code-block__active[data-v-4f1e9d0c]{display:block}.theme-code-block>pre[data-v-4f1e9d0c]{background-color:orange}@media (max-width:419px){.theme-code-group div[class*=language-][data-v-4f1e9d0c]{margin:0}}.theme-mode-light[data-v-2f5f1757]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-2f5f1757]::-moz-selection,.theme-mode-light code[class*=language-][data-v-2f5f1757] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-2f5f1757]::selection,.theme-mode-light code[class*=language-][data-v-2f5f1757] ::selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757]::selection,.theme-mode-light pre[class*=language-][data-v-2f5f1757] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-2f5f1757],.theme-mode-light .token.comment[data-v-2f5f1757],.theme-mode-light .token.doctype[data-v-2f5f1757],.theme-mode-light .token.prolog[data-v-2f5f1757]{color:#708090}.theme-mode-light .token.punctuation[data-v-2f5f1757]{color:#999}.theme-mode-light .namespace[data-v-2f5f1757]{opacity:.7}.theme-mode-light .token.boolean[data-v-2f5f1757],.theme-mode-light .token.constant[data-v-2f5f1757],.theme-mode-light .token.deleted[data-v-2f5f1757],.theme-mode-light .token.number[data-v-2f5f1757],.theme-mode-light .token.property[data-v-2f5f1757],.theme-mode-light .token.symbol[data-v-2f5f1757],.theme-mode-light .token.tag[data-v-2f5f1757]{color:#905}.theme-mode-light .token.attr-name[data-v-2f5f1757],.theme-mode-light .token.builtin[data-v-2f5f1757],.theme-mode-light .token.char[data-v-2f5f1757],.theme-mode-light .token.inserted[data-v-2f5f1757],.theme-mode-light .token.selector[data-v-2f5f1757],.theme-mode-light .token.string[data-v-2f5f1757]{color:#690}.theme-mode-light .language-css .token.string[data-v-2f5f1757],.theme-mode-light .style .token.string[data-v-2f5f1757],.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-2f5f1757],.theme-mode-light .token.attr-value[data-v-2f5f1757],.theme-mode-light .token.keyword[data-v-2f5f1757]{color:#07a}.theme-mode-light .token.class-name[data-v-2f5f1757],.theme-mode-light .token.function[data-v-2f5f1757]{color:#dd4a68}.theme-mode-light .token.important[data-v-2f5f1757],.theme-mode-light .token.regex[data-v-2f5f1757],.theme-mode-light .token.variable[data-v-2f5f1757]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-2f5f1757],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-2f5f1757]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-2f5f1757]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-2f5f1757]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-2f5f1757]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-2f5f1757]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-light pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-2f5f1757],.theme-mode-light .token.cdata[data-v-2f5f1757],.theme-mode-light .token.comment[data-v-2f5f1757],.theme-mode-light .token.doctype[data-v-2f5f1757],.theme-mode-light .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-light .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-light .token.attr-name[data-v-2f5f1757],.theme-mode-light .token.deleted[data-v-2f5f1757],.theme-mode-light .token.namespace[data-v-2f5f1757],.theme-mode-light .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-light .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-light .token.boolean[data-v-2f5f1757],.theme-mode-light .token.function[data-v-2f5f1757],.theme-mode-light .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-light .token.class-name[data-v-2f5f1757],.theme-mode-light .token.constant[data-v-2f5f1757],.theme-mode-light .token.property[data-v-2f5f1757],.theme-mode-light .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-light .token.atrule[data-v-2f5f1757],.theme-mode-light .token.builtin[data-v-2f5f1757],.theme-mode-light .token.important[data-v-2f5f1757],.theme-mode-light .token.keyword[data-v-2f5f1757],.theme-mode-light .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-2f5f1757],.theme-mode-light .token.char[data-v-2f5f1757],.theme-mode-light .token.regex[data-v-2f5f1757],.theme-mode-light .token.string[data-v-2f5f1757],.theme-mode-light .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-2f5f1757],.theme-mode-light .style .token.string[data-v-2f5f1757],.theme-mode-light .token.entity[data-v-2f5f1757],.theme-mode-light .token.operator[data-v-2f5f1757],.theme-mode-light .token.url[data-v-2f5f1757]{background:none}.theme-mode-light .token.bold[data-v-2f5f1757],.theme-mode-light .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-light .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-light .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-light .token.inserted[data-v-2f5f1757]{color:green}.theme-mode-dark[data-v-2f5f1757]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-2f5f1757],.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-dark pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-2f5f1757],.theme-mode-dark .token.cdata[data-v-2f5f1757],.theme-mode-dark .token.comment[data-v-2f5f1757],.theme-mode-dark .token.doctype[data-v-2f5f1757],.theme-mode-dark .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-dark .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-2f5f1757],.theme-mode-dark .token.deleted[data-v-2f5f1757],.theme-mode-dark .token.namespace[data-v-2f5f1757],.theme-mode-dark .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-2f5f1757],.theme-mode-dark .token.function[data-v-2f5f1757],.theme-mode-dark .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-2f5f1757],.theme-mode-dark .token.constant[data-v-2f5f1757],.theme-mode-dark .token.property[data-v-2f5f1757],.theme-mode-dark .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-2f5f1757],.theme-mode-dark .token.builtin[data-v-2f5f1757],.theme-mode-dark .token.important[data-v-2f5f1757],.theme-mode-dark .token.keyword[data-v-2f5f1757],.theme-mode-dark .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-2f5f1757],.theme-mode-dark .token.char[data-v-2f5f1757],.theme-mode-dark .token.regex[data-v-2f5f1757],.theme-mode-dark .token.string[data-v-2f5f1757],.theme-mode-dark .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-dark .token.entity[data-v-2f5f1757],.theme-mode-dark .token.operator[data-v-2f5f1757],.theme-mode-dark .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-2f5f1757],.theme-mode-dark .style .token.string[data-v-2f5f1757],.theme-mode-dark .token.entity[data-v-2f5f1757],.theme-mode-dark .token.operator[data-v-2f5f1757],.theme-mode-dark .token.url[data-v-2f5f1757]{background:none}.theme-mode-dark .token.bold[data-v-2f5f1757],.theme-mode-dark .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-dark .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-dark .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-dark .token.inserted[data-v-2f5f1757]{color:green}.theme-mode-read[data-v-2f5f1757]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-2f5f1757],.theme-mode-read pre[class*=language-][data-v-2f5f1757]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-2f5f1757]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-2f5f1757],.theme-mode-read pre[class*=language-][data-v-2f5f1757]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-2f5f1757]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-2f5f1757],.theme-mode-read .token.cdata[data-v-2f5f1757],.theme-mode-read .token.comment[data-v-2f5f1757],.theme-mode-read .token.doctype[data-v-2f5f1757],.theme-mode-read .token.prolog[data-v-2f5f1757]{color:#999}.theme-mode-read .token.punctuation[data-v-2f5f1757]{color:#ccc}.theme-mode-read .token.attr-name[data-v-2f5f1757],.theme-mode-read .token.deleted[data-v-2f5f1757],.theme-mode-read .token.namespace[data-v-2f5f1757],.theme-mode-read .token.tag[data-v-2f5f1757]{color:#e2777a}.theme-mode-read .token.function-name[data-v-2f5f1757]{color:#6196cc}.theme-mode-read .token.boolean[data-v-2f5f1757],.theme-mode-read .token.function[data-v-2f5f1757],.theme-mode-read .token.number[data-v-2f5f1757]{color:#f08d49}.theme-mode-read .token.class-name[data-v-2f5f1757],.theme-mode-read .token.constant[data-v-2f5f1757],.theme-mode-read .token.property[data-v-2f5f1757],.theme-mode-read .token.symbol[data-v-2f5f1757]{color:#f8c555}.theme-mode-read .token.atrule[data-v-2f5f1757],.theme-mode-read .token.builtin[data-v-2f5f1757],.theme-mode-read .token.important[data-v-2f5f1757],.theme-mode-read .token.keyword[data-v-2f5f1757],.theme-mode-read .token.selector[data-v-2f5f1757]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-2f5f1757],.theme-mode-read .token.char[data-v-2f5f1757],.theme-mode-read .token.regex[data-v-2f5f1757],.theme-mode-read .token.string[data-v-2f5f1757],.theme-mode-read .token.variable[data-v-2f5f1757]{color:#7ec699}.theme-mode-read .token.entity[data-v-2f5f1757],.theme-mode-read .token.operator[data-v-2f5f1757],.theme-mode-read .token.url[data-v-2f5f1757]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-2f5f1757],.theme-mode-read .style .token.string[data-v-2f5f1757],.theme-mode-read .token.entity[data-v-2f5f1757],.theme-mode-read .token.operator[data-v-2f5f1757],.theme-mode-read .token.url[data-v-2f5f1757]{background:none}.theme-mode-read .token.bold[data-v-2f5f1757],.theme-mode-read .token.important[data-v-2f5f1757]{font-weight:700}.theme-mode-read .token.italic[data-v-2f5f1757]{font-style:italic}.theme-mode-read .token.entity[data-v-2f5f1757]{cursor:help}.theme-mode-read .token.inserted[data-v-2f5f1757]{color:green}.theme-code-group[data-v-2f5f1757],.theme-code-group__nav[data-v-2f5f1757]{background-color:var(--codeBg);padding-bottom:22px;border-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__nav[data-v-2f5f1757]{margin-bottom:-35px}.theme-code-group__ul[data-v-2f5f1757]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__li[data-v-2f5f1757],.theme-code-group__nav-tab[data-v-2f5f1757]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:var(--codeColor);font-weight:600;opacity:.85}.theme-code-group__nav-tab-active[data-v-2f5f1757]{border-bottom:1px solid #4274f4;opacity:1}.pre-blank[data-v-2f5f1757]{color:#4274f4}body .theme-vdoing-content code{color:var(--textLightenColor);padding:.25rem .5rem;margin:0;font-size:.9em;background-color:hsla(0,0%,39.2%,.08);border-radius:3px}body .theme-vdoing-content code .token.deleted{color:#ec5975}body .theme-vdoing-content code .token.inserted{color:#4274f4}body .theme-vdoing-content pre,body .theme-vdoing-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}body .theme-vdoing-content pre[class*=language-] code,body .theme-vdoing-content pre code{color:var(--codeColor);padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:var(--codeBg);border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.3)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative!important;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.8rem;color:hsla(0,0%,58.8%,.7)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:2.5rem;height:100%;background-color:rgba(0,0,0,.3)}div[class*=language-].line-numbers-mode pre{padding-left:3.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:2.5rem;text-align:center;color:hsla(0,0%,49.8%,.5);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:2.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--borderColor);background-color:var(--codeBg)}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:.2rem}.custom-block p{margin:0}.custom-block.danger,.custom-block.note,.custom-block.tip,.custom-block.warning{padding:.5rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983;color:#215d42}.custom-block.warning{background-color:#fff7d0;border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:var(--textColor)}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:var(--textColor)}.custom-block.note{background-color:#e8f5fa;border-color:#157bae;color:#0d4a68}.custom-block.right{color:var(--textColor);font-size:.9rem;text-align:right}.custom-block.theorem{margin:1rem 0;padding:.8rem 1.5rem;border-radius:2px;background-color:var(--customBlockBg)}.custom-block.theorem .title{font-weight:700;margin:.5rem 0}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1em 0;padding:1.6em;background-color:var(--customBlockBg)}.custom-block.details p{margin:.8rem 0}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.custom-block.details summary:hover{color:#4274f4}.theme-mode-dark .custom-block.warning{background-color:rgba(255,247,208,.2);color:#e7c000}.theme-mode-dark .custom-block.warning .custom-block-title{color:#ffdc2f}.theme-mode-dark .custom-block.tip{background-color:rgba(243,245,247,.2);color:#42b983}.theme-mode-dark .custom-block.danger{background-color:rgba(255,230,230,.4);color:maroon}.theme-mode-dark .custom-block.danger a{color:#4274f4}.theme-mode-dark .custom-block.note{background-color:rgba(243,245,247,.2);color:#157bae}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-vdoing-content:not(.custom){max-width:860px}.table-of-contents .badge{vertical-align:middle}.center-container{text-align:center}.center-container>h1,.center-container>h2,.center-container>h3,.center-container>h4,.center-container>h5,.center-container>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.center-container>h1 a.header-anchor,.center-container>h2 a.header-anchor,.center-container>h3 a.header-anchor,.center-container>h4 a.header-anchor,.center-container>h5 a.header-anchor,.center-container>h6 a.header-anchor{float:none;padding-right:0;margin-left:-.9rem}.cardListContainer{margin:.7rem 0}.cardListContainer>:not(.card-list){display:none}.cardListContainer .card-list{margin:-.35rem;display:flex;flex-wrap:wrap;align-items:flex-start}.cardListContainer .card-list .card-item{width:calc(33.33333% - .7rem);margin:.35rem;background:var(--bodyBg);border-radius:3px;color:var(--textColor);display:flex;box-shadow:1px 1px 2px 0 rgba(0,0,0,.06);transition:all .4s}.cardListContainer .card-list .card-item:hover{text-decoration:none;box-shadow:0 10px 20px -10px var(--randomColor,rgba(0,0,0,.15));transform:translateY(-3px) scale(1.01)}.cardListContainer .card-list .card-item:hover img{box-shadow:3px 2px 7px rgba(0,0,0,.15)}.cardListContainer .card-list .card-item:hover div p{text-shadow:3px 2px 5px rgba(0,0,0,.15)}.cardListContainer .card-list .card-item img{width:60px;height:60px;border-radius:50%;border:2px solid #fff;margin:1rem 0 1rem 1rem;box-shadow:3px 2px 5px rgba(0,0,0,.08);transition:all .4s}.cardListContainer .card-list .card-item div{flex:1;display:inline-block;float:right;padding:1rem 0}.cardListContainer .card-list .card-item div p{margin:0;padding:0 1rem;transition:text-shadow .4s;text-align:center}.cardListContainer .card-list .card-item div .name{margin:.2rem 0 .3rem}.cardListContainer .card-list .card-item div .desc{font-size:.8rem;line-height:1.1rem;opacity:.8;margin-bottom:.2rem}.cardListContainer .card-list .card-item.row-1{width:calc(100% - .7rem)}.cardListContainer .card-list .card-item.row-1 img{margin-left:2rem}.cardListContainer .card-list .card-item.row-2{width:calc(50% - .7rem)}.cardListContainer .card-list .card-item.row-2 img{margin-left:1.5rem}.cardListContainer .card-list .card-item.row-3{width:calc(33.33333% - .7rem)}.cardListContainer .card-list .card-item.row-4{width:calc(25% - .7rem)}.cardImgListContainer{margin:1rem 0}.cardImgListContainer>:not(.card-list){display:none}.cardImgListContainer .card-list{margin:-.5rem;display:flex;flex-wrap:wrap;align-items:flex-start}.cardImgListContainer .card-list .card-item{width:calc(33.33333% - 1rem);margin:.5rem;background:var(--mainBg);border:1px solid rgba(0,0,0,.1);box-sizing:border-box;border-radius:3px;overflow:hidden;color:var(--textColor);box-shadow:2px 2px 10px rgba(0,0,0,.04);display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:stretch;transition:all .4s}.cardImgListContainer .card-list .card-item:hover{box-shadow:1px 1px 20px rgba(0,0,0,.1);transform:translateY(-3px)}.cardImgListContainer .card-list .card-item .box-img{overflow:hidden;position:relative;background:#eee}.cardImgListContainer .card-list .card-item .box-img img{display:block;width:100%;height:100%;transition:all .3s}.cardImgListContainer .card-list .card-item a{color:var(--textColor);transition:color .3s}.cardImgListContainer .card-list .card-item a:hover{text-decoration:none}.cardImgListContainer .card-list .card-item .box-info{padding:.8rem 1rem}.cardImgListContainer .card-list .card-item .box-info p{margin:0}.cardImgListContainer .card-list .card-item .box-info .desc{margin-top:.3rem;opacity:.8;font-size:.9rem;line-height:1.1rem;overflow:hidden;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.cardImgListContainer .card-list .card-item .box-footer{overflow:hidden;padding:.8rem 1rem;border-top:1px solid rgba(0,0,0,.1)}.cardImgListContainer .card-list .card-item .box-footer img{width:1.8rem;height:1.8rem;border-radius:50%;float:left}.cardImgListContainer .card-list .card-item .box-footer span{line-height:1.8rem;float:left;margin-left:.6rem;font-size:.8rem}.cardImgListContainer .card-list .card-item.row-1{width:calc(100% - 1rem)}.cardImgListContainer .card-list .card-item.row-2{width:calc(50% - 1rem)}.cardImgListContainer .card-list .card-item.row-3{width:calc(33.33333% - 1rem)}.cardImgListContainer .card-list .card-item.row-4{width:calc(25% - 1rem)}.theme-mode-dark .cardImgListContainer .card-list .card-item,.theme-mode-dark .cardImgListContainer .card-list .card-item .box-footer{border-color:var(--borderColor)}@media (max-width:900px){.cardListContainer .card-list .card-item.row-4{width:calc(33.33333% - .7rem)}.cardImgListContainer .card-list .card-item.row-4{width:calc(33.33333% - 1rem)}}@media (max-width:720px){.cardListContainer .card-list .card-item.row-3,.cardListContainer .card-list .card-item.row-4{width:calc(50% - .7rem)}.cardListContainer .card-list .card-item.row-3 img,.cardListContainer .card-list .card-item.row-4 img{margin-left:1.5rem}.cardImgListContainer .card-list .card-item.row-3,.cardImgListContainer .card-list .card-item.row-4{width:calc(50% - 1rem)}}@media (max-width:500px){.cardListContainer .card-list .card-item.row-1,.cardListContainer .card-list .card-item.row-2,.cardListContainer .card-list .card-item.row-3,.cardListContainer .card-list .card-item.row-4{width:calc(100% - .7rem)}.cardListContainer .card-list .card-item.row-1 img,.cardListContainer .card-list .card-item.row-2 img,.cardListContainer .card-list .card-item.row-3 img,.cardListContainer .card-list .card-item.row-4 img{margin-left:1.5rem}.cardImgListContainer .card-list .card-item.row-1,.cardImgListContainer .card-list .card-item.row-2,.cardImgListContainer .card-list .card-item.row-3,.cardImgListContainer .card-list .card-item.row-4{width:calc(100% - 1rem)}}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-size:16px;color:#2c3e50;background:var(--bodyBg)}a,button,input{outline:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-focus-ring-color:transparent}@media (min-width:719px){::-webkit-scrollbar{width:6px;height:5px}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.15);-webkit-border-radius:3px}::-webkit-scrollbar-thumb:vertical{height:5px;background-color:rgba(0,0,0,.28);-webkit-border-radius:3px}::-webkit-scrollbar-thumb:horizontal{width:5px;background-color:rgba(0,0,0,.28);-webkit-border-radius:3px}}.card-box{border-radius:5px;background:var(--mainBg);box-shadow:0 0 4px 0 rgba(0,0,0,.1);transition:box-shadow .5s}.card-box:hover{box-shadow:0 1px 15px 0 rgba(0,0,0,.1)}@media (max-width:719px){.theme-style-line{margin-left:-1px;margin-right:-1px}}.theme-style-line .card-box{box-shadow:0 0;border:1px solid var(--borderColor)}.blur{-webkit-backdrop-filter:saturate(200%) blur(20px);backdrop-filter:saturate(200%) blur(20px)}.custom-page{min-height:calc(100vh - 3.6rem);padding-top:3.6rem;padding-bottom:.9rem}.custom-page .theme-vdoing-wrapper{margin:0 auto}body .search-box input{background-color:transparent;color:var(--textColor);border:1px solid var(--borderColor,#ccc)}@media (max-width:959px){body .search-box input{border-color:transparent}}.page{transition:padding .2s ease;padding-left:.8rem}.navbar{position:fixed;z-index:20;top:0;left:0;right:0;height:3.6rem;background-color:var(--blurBg);box-sizing:border-box;box-shadow:0 2px 5px rgba(0,0,0,.06)}.sidebar-mask{top:0;width:100vw;height:100vh}.sidebar-hover-trigger,.sidebar-mask{position:fixed;z-index:12;left:0;display:none}.sidebar-hover-trigger{top:8.1rem;bottom:0;width:24px}.sidebar{font-size:16px;background-color:var(--sidebarBg);width:18rem;position:fixed;z-index:13;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid var(--borderColor);overflow-y:auto;transform:translateX(-100%);transition:transform .2s}@media (max-width:719px){.sidebar{background-color:var(--mainBg)}}.theme-vdoing-content:not(.custom){word-wrap:break-word}.theme-vdoing-content:not(.custom) a:hover{text-decoration:underline}.theme-vdoing-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-vdoing-content:not(.custom) img{max-width:100%}.theme-vdoing-content.custom{padding:0;margin:0}.theme-vdoing-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#4274f4}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;opacity:.75;border-left:.2rem solid hsla(0,0%,39.2%,.3);margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-vdoing-content:not(.custom)>h1,.theme-vdoing-content:not(.custom)>h2,.theme-vdoing-content:not(.custom)>h3,.theme-vdoing-content:not(.custom)>h4,.theme-vdoing-content:not(.custom)>h5,.theme-vdoing-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-vdoing-content:not(.custom)>h1:first-child,.theme-vdoing-content:not(.custom)>h2:first-child,.theme-vdoing-content:not(.custom)>h3:first-child,.theme-vdoing-content:not(.custom)>h4:first-child,.theme-vdoing-content:not(.custom)>h5:first-child,.theme-vdoing-content:not(.custom)>h6:first-child{margin-bottom:1rem}.theme-vdoing-content:not(.custom)>h1:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h1:first-child+p,.theme-vdoing-content:not(.custom)>h1:first-child+pre,.theme-vdoing-content:not(.custom)>h2:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h2:first-child+p,.theme-vdoing-content:not(.custom)>h2:first-child+pre,.theme-vdoing-content:not(.custom)>h3:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h3:first-child+p,.theme-vdoing-content:not(.custom)>h3:first-child+pre,.theme-vdoing-content:not(.custom)>h4:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h4:first-child+p,.theme-vdoing-content:not(.custom)>h4:first-child+pre,.theme-vdoing-content:not(.custom)>h5:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h5:first-child+p,.theme-vdoing-content:not(.custom)>h5:first-child+pre,.theme-vdoing-content:not(.custom)>h6:first-child+.custom-block,.theme-vdoing-content:not(.custom)>h6:first-child+p,.theme-vdoing-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}.theme-vdoing-content:not(.custom)>.custom-block:first-child,.theme-vdoing-content:not(.custom)>p:first-child,.theme-vdoing-content:not(.custom)>pre:first-child{margin-top:2rem}h1{font-size:1.9rem}.theme-vdoing-content:not(.custom)>h1:first-child{display:none}h2{font-size:1.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--borderColor)}h3{font-size:1.35rem}.page h4{font-size:1.25rem}.page h5{font-size:1.15rem}.page h6{font-size:1.05rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid var(--borderColor)}table{border-collapse:collapse;margin:1rem 0;overflow-x:auto;width:100%;display:inline-table}@media (max-width:719px){table{display:block}}tr{border-top:1px solid var(--borderColor)}tr:nth-child(2n){background-color:hsla(0,0%,58.8%,.1)}td,th{border:1px solid var(--borderColor);padding:.6em 1em}@media (max-width:719px){td,th{padding:.3em .5em}}td a,th a{word-break:break-all}.theme-container{color:var(--textColor);min-height:100vh}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-vdoing-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px}}@media (max-width:719px){.sidebar{width:17.099999999999998rem}}@media (min-width:720px) and (max-width:959px){.sidebar{width:16.2rem}.theme-container.sidebar-open .page{padding-left:17rem!important}}@media (max-width:719px){.sidebar{top:0;height:100vh;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-vdoing-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}@media (min-width:720px){.theme-container .sidebar-hover-trigger{display:block}.theme-container .sidebar-hover-trigger:hover~.sidebar,.theme-container:not(.sidebar-open) .sidebar-hover-trigger~.sidebar:hover{transform:translateX(0);z-index:100}.theme-container.sidebar-open .sidebar-mask{display:none}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.sidebar-open .sidebar-button{left:18rem}.theme-container.sidebar-open .page{padding-left:18.8rem;padding-right:.8rem}.theme-container.sidebar-open .sidebar-hover-trigger{display:none}.theme-container.have-rightmenu .page{padding-right:250px}.theme-container.no-sidebar .page{padding-left:0!important}.theme-container.no-sidebar .sidebar-hover-trigger{display:none}.theme-container.hide-navbar .sidebar-hover-trigger{top:4.5rem}.theme-container.hide-navbar .sidebar{top:0}.theme-container.no-sidebar .sidebar-button{display:none}}@media print{.buttons,.navbar,.sidebar{display:none}.page{padding-top:0!important}}@media (min-width:720px) and (max-width:959px){.theme-container.sidebar-open:not(.on-sidebar) .sidebar-button{left:12.6rem}}.home-wrapper .banner .banner-conent .hero h1{font-size:2.8rem!important}table{width:auto}.card-box,.page>:not(.footer){box-shadow:none!important}@media (min-width:940px){.page{padding-top:3.6rem!important}}.home-wrapper .banner .banner-conent{padding:0 2.9rem;box-sizing:border-box}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a h2{margin-top:2rem;font-size:1.2rem!important}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a p{padding:0 1rem}.gt-container .gt-ico-tip:after{content:"。( Win + . ) or ( ⌃ + ⌘ + ␣ ) open Emoji";color:#999}.gt-container .gt-meta{border-color:var(--borderColor)!important}.gt-container .gt-comments-null{color:var(--textColor);opacity:.5}.gt-container .gt-header-textarea{color:var(--textColor);background:hsla(0,0%,70.6%,.1)!important}.gt-container .gt-btn{border-color:#4274f4!important;background-color:#4274f4!important}.gt-container .gt-btn-preview{background-color:hsla(0,0%,100%,0)!important;color:#4274f4!important}.gt-container a{color:#4274f4!important}.gt-container .gt-svg svg{fill:#4274f4!important}.gt-container .gt-comment-admin .gt-comment-content,.gt-container .gt-comment-content{background-color:hsla(0,0%,58.8%,.1)!important}.gt-container .gt-comment-admin .gt-comment-content:hover,.gt-container .gt-comment-content:hover{box-shadow:0 0 25px hsla(0,0%,58.8%,.5)!important}.gt-container .gt-comment-admin .gt-comment-content .gt-comment-body,.gt-container .gt-comment-content .gt-comment-body{color:var(--textColor)!important}.qq{position:relative}.qq:after{content:"可撩";background:#4274f4;color:#fff;padding:0 5px;border-radius:10px;font-size:12px;position:absolute;top:-4px;right:-35px;transform:scale(.85)}body .vuepress-plugin-demo-block__wrapper,body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__display{border-color:hsla(0,0%,62.7%,.3)}body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__expand:before{border-top-color:#4274f4!important;border-bottom-color:#4274f4!important}body .vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover svg{fill:#4274f4!important}.suggestions{overflow:auto;max-height:calc(100vh - 6rem)}@media (max-width:719px){.suggestions{width:90vw;min-width:90vw!important;margin-right:-20px}}.suggestions .highlight{color:#4274f4;font-weight:700}#nprogress{pointer-events:none}#nprogress .bar{background:#4274f4;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #4274f4,0 0 5px #4274f4;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#4274f4 transparent transparent #4274f4;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.theme-mode-light[data-v-439bb2a8]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-439bb2a8]::-moz-selection,.theme-mode-light code[class*=language-][data-v-439bb2a8] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-439bb2a8]::selection,.theme-mode-light code[class*=language-][data-v-439bb2a8] ::selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8]::selection,.theme-mode-light pre[class*=language-][data-v-439bb2a8] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-439bb2a8],.theme-mode-light .token.comment[data-v-439bb2a8],.theme-mode-light .token.doctype[data-v-439bb2a8],.theme-mode-light .token.prolog[data-v-439bb2a8]{color:#708090}.theme-mode-light .token.punctuation[data-v-439bb2a8]{color:#999}.theme-mode-light .namespace[data-v-439bb2a8]{opacity:.7}.theme-mode-light .token.boolean[data-v-439bb2a8],.theme-mode-light .token.constant[data-v-439bb2a8],.theme-mode-light .token.deleted[data-v-439bb2a8],.theme-mode-light .token.number[data-v-439bb2a8],.theme-mode-light .token.property[data-v-439bb2a8],.theme-mode-light .token.symbol[data-v-439bb2a8],.theme-mode-light .token.tag[data-v-439bb2a8]{color:#905}.theme-mode-light .token.attr-name[data-v-439bb2a8],.theme-mode-light .token.builtin[data-v-439bb2a8],.theme-mode-light .token.char[data-v-439bb2a8],.theme-mode-light .token.inserted[data-v-439bb2a8],.theme-mode-light .token.selector[data-v-439bb2a8],.theme-mode-light .token.string[data-v-439bb2a8]{color:#690}.theme-mode-light .language-css .token.string[data-v-439bb2a8],.theme-mode-light .style .token.string[data-v-439bb2a8],.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-439bb2a8],.theme-mode-light .token.attr-value[data-v-439bb2a8],.theme-mode-light .token.keyword[data-v-439bb2a8]{color:#07a}.theme-mode-light .token.class-name[data-v-439bb2a8],.theme-mode-light .token.function[data-v-439bb2a8]{color:#dd4a68}.theme-mode-light .token.important[data-v-439bb2a8],.theme-mode-light .token.regex[data-v-439bb2a8],.theme-mode-light .token.variable[data-v-439bb2a8]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-439bb2a8],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-439bb2a8]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-439bb2a8]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-439bb2a8]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-439bb2a8]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-439bb2a8]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-light pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-439bb2a8],.theme-mode-light .token.cdata[data-v-439bb2a8],.theme-mode-light .token.comment[data-v-439bb2a8],.theme-mode-light .token.doctype[data-v-439bb2a8],.theme-mode-light .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-light .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-light .token.attr-name[data-v-439bb2a8],.theme-mode-light .token.deleted[data-v-439bb2a8],.theme-mode-light .token.namespace[data-v-439bb2a8],.theme-mode-light .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-light .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-light .token.boolean[data-v-439bb2a8],.theme-mode-light .token.function[data-v-439bb2a8],.theme-mode-light .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-light .token.class-name[data-v-439bb2a8],.theme-mode-light .token.constant[data-v-439bb2a8],.theme-mode-light .token.property[data-v-439bb2a8],.theme-mode-light .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-light .token.atrule[data-v-439bb2a8],.theme-mode-light .token.builtin[data-v-439bb2a8],.theme-mode-light .token.important[data-v-439bb2a8],.theme-mode-light .token.keyword[data-v-439bb2a8],.theme-mode-light .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-439bb2a8],.theme-mode-light .token.char[data-v-439bb2a8],.theme-mode-light .token.regex[data-v-439bb2a8],.theme-mode-light .token.string[data-v-439bb2a8],.theme-mode-light .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-439bb2a8],.theme-mode-light .style .token.string[data-v-439bb2a8],.theme-mode-light .token.entity[data-v-439bb2a8],.theme-mode-light .token.operator[data-v-439bb2a8],.theme-mode-light .token.url[data-v-439bb2a8]{background:none}.theme-mode-light .token.bold[data-v-439bb2a8],.theme-mode-light .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-light .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-light .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-light .token.inserted[data-v-439bb2a8]{color:green}.theme-mode-dark[data-v-439bb2a8]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-439bb2a8],.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-dark pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-439bb2a8],.theme-mode-dark .token.cdata[data-v-439bb2a8],.theme-mode-dark .token.comment[data-v-439bb2a8],.theme-mode-dark .token.doctype[data-v-439bb2a8],.theme-mode-dark .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-dark .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-439bb2a8],.theme-mode-dark .token.deleted[data-v-439bb2a8],.theme-mode-dark .token.namespace[data-v-439bb2a8],.theme-mode-dark .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-439bb2a8],.theme-mode-dark .token.function[data-v-439bb2a8],.theme-mode-dark .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-439bb2a8],.theme-mode-dark .token.constant[data-v-439bb2a8],.theme-mode-dark .token.property[data-v-439bb2a8],.theme-mode-dark .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-439bb2a8],.theme-mode-dark .token.builtin[data-v-439bb2a8],.theme-mode-dark .token.important[data-v-439bb2a8],.theme-mode-dark .token.keyword[data-v-439bb2a8],.theme-mode-dark .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-439bb2a8],.theme-mode-dark .token.char[data-v-439bb2a8],.theme-mode-dark .token.regex[data-v-439bb2a8],.theme-mode-dark .token.string[data-v-439bb2a8],.theme-mode-dark .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-dark .token.entity[data-v-439bb2a8],.theme-mode-dark .token.operator[data-v-439bb2a8],.theme-mode-dark .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-439bb2a8],.theme-mode-dark .style .token.string[data-v-439bb2a8],.theme-mode-dark .token.entity[data-v-439bb2a8],.theme-mode-dark .token.operator[data-v-439bb2a8],.theme-mode-dark .token.url[data-v-439bb2a8]{background:none}.theme-mode-dark .token.bold[data-v-439bb2a8],.theme-mode-dark .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-dark .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-dark .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-dark .token.inserted[data-v-439bb2a8]{color:green}.theme-mode-read[data-v-439bb2a8]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-439bb2a8],.theme-mode-read pre[class*=language-][data-v-439bb2a8]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-439bb2a8]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-439bb2a8],.theme-mode-read pre[class*=language-][data-v-439bb2a8]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-439bb2a8]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-439bb2a8],.theme-mode-read .token.cdata[data-v-439bb2a8],.theme-mode-read .token.comment[data-v-439bb2a8],.theme-mode-read .token.doctype[data-v-439bb2a8],.theme-mode-read .token.prolog[data-v-439bb2a8]{color:#999}.theme-mode-read .token.punctuation[data-v-439bb2a8]{color:#ccc}.theme-mode-read .token.attr-name[data-v-439bb2a8],.theme-mode-read .token.deleted[data-v-439bb2a8],.theme-mode-read .token.namespace[data-v-439bb2a8],.theme-mode-read .token.tag[data-v-439bb2a8]{color:#e2777a}.theme-mode-read .token.function-name[data-v-439bb2a8]{color:#6196cc}.theme-mode-read .token.boolean[data-v-439bb2a8],.theme-mode-read .token.function[data-v-439bb2a8],.theme-mode-read .token.number[data-v-439bb2a8]{color:#f08d49}.theme-mode-read .token.class-name[data-v-439bb2a8],.theme-mode-read .token.constant[data-v-439bb2a8],.theme-mode-read .token.property[data-v-439bb2a8],.theme-mode-read .token.symbol[data-v-439bb2a8]{color:#f8c555}.theme-mode-read .token.atrule[data-v-439bb2a8],.theme-mode-read .token.builtin[data-v-439bb2a8],.theme-mode-read .token.important[data-v-439bb2a8],.theme-mode-read .token.keyword[data-v-439bb2a8],.theme-mode-read .token.selector[data-v-439bb2a8]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-439bb2a8],.theme-mode-read .token.char[data-v-439bb2a8],.theme-mode-read .token.regex[data-v-439bb2a8],.theme-mode-read .token.string[data-v-439bb2a8],.theme-mode-read .token.variable[data-v-439bb2a8]{color:#7ec699}.theme-mode-read .token.entity[data-v-439bb2a8],.theme-mode-read .token.operator[data-v-439bb2a8],.theme-mode-read .token.url[data-v-439bb2a8]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-439bb2a8],.theme-mode-read .style .token.string[data-v-439bb2a8],.theme-mode-read .token.entity[data-v-439bb2a8],.theme-mode-read .token.operator[data-v-439bb2a8],.theme-mode-read .token.url[data-v-439bb2a8]{background:none}.theme-mode-read .token.bold[data-v-439bb2a8],.theme-mode-read .token.important[data-v-439bb2a8]{font-weight:700}.theme-mode-read .token.italic[data-v-439bb2a8]{font-style:italic}.theme-mode-read .token.entity[data-v-439bb2a8]{cursor:help}.theme-mode-read .token.inserted[data-v-439bb2a8]{color:green}.theme-vdoing-content[data-v-439bb2a8]{margin:3rem auto;padding:1.5rem}.theme-vdoing-content span[data-v-439bb2a8]{font-size:6rem;color:#4274f4}.main-wrapper{margin:1.5rem auto 0;max-width:1100px;padding:0 .9rem;box-sizing:border-box;position:relative;display:flex}.main-wrapper .main-left{flex:1}.main-wrapper .main-left .theme-vdoing-content.card-box{padding:1rem 1.5rem;margin-bottom:.9rem}.main-wrapper .main-left .home-content{padding:1rem 1.5rem 0}.main-wrapper .main-right>*{width:245px;box-sizing:border-box}@media (max-width:900px){.main-wrapper .main-right>*{width:235px}}.main-wrapper .main-right .card-box{margin:0 0 .8rem .8rem;padding-top:.95rem;padding-bottom:.95rem}@media (max-width:719px){.main-wrapper{margin:.9rem 0;padding:0;display:block}.main-wrapper .main-left{width:100%}.main-wrapper .main-left .post-list{margin-bottom:3rem}.main-wrapper .main-left .post-list .post{border-radius:0}.main-wrapper .main-left .pagination{margin-bottom:3rem}.main-wrapper .main-right .blogger-wrapper{display:none}.main-wrapper .main-right .card-box{margin:0 0 .9rem;border-radius:0;width:100%}.theme-style-line .main-wrapper .main-right .card-box{margin:-1px 0 0}}.post-list{margin-bottom:3rem}.post-list .post{position:relative;padding:1rem 1.5rem;margin-bottom:.8rem;transition:all .3s}.post-list .post:last-child{border-bottom:none}.post-list .post.post-leave-active{display:none}.post-list .post.post-enter{opacity:0;transform:translateX(-20px)}.post-list .post:before{position:absolute;top:-1px;right:0;font-size:2.5rem;color:#ff5722;opacity:.85}.post-list .post .title-wrapper a{color:var(--textColor)}.post-list .post .title-wrapper a:hover{color:#4274f4}.post-list .post .title-wrapper h2{margin:.5rem 0;font-size:1.4rem;border:none}.post-list .post .title-wrapper h2 .title-tag{height:1.2rem;line-height:1.2rem;border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.15rem);display:inline-block}.post-list .post .title-wrapper h2 a{display:block}@media (max-width:719px){.post-list .post .title-wrapper h2 a{font-weight:400}}.post-list .post .title-wrapper .article-info>a,.post-list .post .title-wrapper .article-info>span{opacity:.7;font-size:.8rem;margin-right:1rem;cursor:pointer}.post-list .post .title-wrapper .article-info>a:before,.post-list .post .title-wrapper .article-info>span:before{margin-right:.3rem}.post-list .post .title-wrapper .article-info>a a,.post-list .post .title-wrapper .article-info>span a{margin:0}.post-list .post .title-wrapper .article-info>a a:not(:first-child):before,.post-list .post .title-wrapper .article-info>span a:not(:first-child):before{content:"/"}.post-list .post .title-wrapper .article-info .tags a:not(:first-child):before{content:"、"}.post-list .post .excerpt-wrapper{border-top:1px solid var(--borderColor);margin:.5rem 0;overflow:hidden}.post-list .post .excerpt-wrapper .excerpt{margin-bottom:.3rem;font-size:.92rem}.post-list .post .excerpt-wrapper .excerpt h1,.post-list .post .excerpt-wrapper .excerpt h2,.post-list .post .excerpt-wrapper .excerpt h3{display:none}.post-list .post .excerpt-wrapper .excerpt img{max-height:280px;max-width:100%!important;margin:0 auto}.post-list .post .excerpt-wrapper .readmore{float:right;margin-right:1rem;line-height:1rem}.post-list .post .excerpt-wrapper .readmore:before{float:right;font-size:.8rem;margin:.1rem 0 0 .2rem}.theme-style-line .post-list{border:1px solid var(--borderColor);border-bottom:none;border-radius:5px;overflow:hidden}.theme-style-line .post-list .post{margin-bottom:0;border:none;border-bottom:1px solid var(--borderColor);border-radius:0}.article-list{padding:1rem 2rem}@media (max-width:959px){.article-list{padding:1rem 1.5rem}}.article-list.no-article-list{display:none}.article-list .article-title{border-bottom:1px solid var(--borderColor);font-size:1.3rem;padding:1rem}.article-list .article-title a{font-size:1.2rem;color:var(--textColor);opacity:.9}.article-list .article-title a:before{margin-right:.4rem;font-size:1.1rem}.article-list .article-wrapper{overflow:hidden}.article-list .article-wrapper dl{border-bottom:1px dotted var(--borderColor);float:left;display:flex;padding:8px 0;margin:0;height:45px;width:100%}.article-list .article-wrapper dl dd{font-size:1.1rem;color:#f17229;width:50px;text-align:center;margin:0;line-height:45px}.article-list .article-wrapper dl dt{flex:1;display:flex}.article-list .article-wrapper dl dt a{color:var(--textColor);flex:1;display:flex;height:45px;align-items:center;font-weight:400}.article-list .article-wrapper dl dt a div{overflow:hidden;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.article-list .article-wrapper dl dt a div .title-tag{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}.article-list .article-wrapper dl dt a:hover{text-decoration:underline}.article-list .article-wrapper dl dt a.more{color:#4274f4}.article-list .article-wrapper dl dt .date{width:50px;margin-right:15px;color:#999;text-align:right;font-size:.9rem;line-height:45px}.pagination{position:relative;height:60px;text-align:center}@media (max-width:720px){.pagination{margin-left:1px;margin-right:1px}}.pagination span{line-height:1rem;opacity:.9;cursor:pointer}.pagination span:hover{color:#4274f4}.pagination span.ellipsis{opacity:.5}.pagination span.ellipsis:before{content:"...";font-size:1.2rem}@media (any-hover:hover){.pagination span.ellipsis.ell-two:hover:before{content:"«"}.pagination span.ellipsis.ell-four:hover:before{content:"»"}}.pagination>span{position:absolute;top:0;padding:1rem 1.2rem;font-size:.95rem}.pagination>span:before{font-size:.4rem}.pagination>span.disabled{color:hsla(0,0%,49%,.5)}.pagination>span.prev{left:0}.pagination>span.prev:before{margin-right:.3rem}.pagination>span.next{right:0}.pagination>span.next:before{float:right;margin-left:.3rem}.pagination>span p{display:inline;line-height:.95rem}.pagination .pagination-list span{display:inline-block;width:2.5rem;height:2.5rem;line-height:2.5rem;margin:.3rem}.pagination .pagination-list span.active{background:#4274f4;color:var(--mainBg)}@media (max-width:800px){.pagination>span{padding:1rem 1.5rem}.pagination>span p{display:none}}@media (max-width:719px){.pagination>span{padding:.9rem 1.5rem}.pagination .pagination-list span{width:2.3rem;height:2.3rem;line-height:2.3rem;margin:.25rem}}@media (max-width:390px){.pagination>span{padding:.8rem 1.3rem}.pagination .pagination-list span{width:2rem;height:2rem;line-height:2rem;margin:.3rem .1rem .1rem}}.blogger-wrapper{height:auto;display:inline-table;padding-top:0!important;overflow:hidden}.blogger-wrapper .avatar{width:100%;overflow:hidden}.blogger-wrapper .avatar img{width:100%;height:100%}.blogger-wrapper .icons{border-top:none;height:35px;line-height:35px}.blogger-wrapper .icons a{font-size:20px;width:33%;color:var(--textColor);display:block;float:left;text-align:center;opacity:.8}.blogger-wrapper .icons a:hover{color:#4274f4}.blogger-wrapper .blogger{padding:.3rem .95rem 0}.blogger-wrapper .blogger .name{font-size:1.3rem;display:block;margin-bottom:6px}.blogger-wrapper .blogger .slogan{color:var(--textColor)}.categories-wrapper .title{color:var(--textColor);opacity:.9;font-size:1.2rem;padding:0 .95rem}.categories-wrapper .title:before{margin-right:.3rem}.categories-wrapper .categories{margin-top:.6rem}.categories-wrapper .categories a{display:block;padding:8px 2.4rem 7px .95rem;color:var(--textColor);opacity:.8;font-size:.95rem;line-height:.95rem;position:relative;transition:all .2s;border-left:2px solid transparent;margin-top:-1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width:719px){.categories-wrapper .categories a{font-weight:400}}.categories-wrapper .categories a:not(.active):hover{color:#4274f4;background:#f8f8f8;border-color:#4274f4}.categories-wrapper .categories a:not(.active):hover span{opacity:.8}.categories-wrapper .categories a span{background-color:var(--textColor);color:var(--mainBg);border-radius:8px;padding:0 .13rem;min-width:1rem;height:1rem;line-height:1rem;font-size:12px;text-align:center;opacity:.6;transition:opacity .3s;position:absolute;right:.95rem;top:8px}.categories-wrapper .categories a.active{background:#4274f4;color:var(--mainBg);padding-left:.8rem;border-radius:1px;border-color:transparent}.theme-mode-dark .categories-wrapper .categories a:not(.active):hover,.theme-mode-read .categories-wrapper .categories a:not(.active):hover{background:var(--customBlockBg)}.tags-wrapper{padding:0 .95rem}.tags-wrapper .title{color:var(--textColor);opacity:.9;font-size:1.2rem}.tags-wrapper .title:before{margin-right:.3rem}.tags-wrapper .tags{text-align:justify;padding:.8rem .5rem .5rem;margin:0 -.5rem -.5rem}.tags-wrapper .tags a{opacity:.8;display:inline-block;padding:.2rem .4rem;transition:all .4s;background-color:var(--textColor);color:var(--mainBg);border-radius:3px;margin:0 .3rem .5rem 0;min-width:2rem;height:1rem;line-height:1rem;font-size:.8rem;text-align:center}@media (max-width:719px){.tags-wrapper .tags a{font-weight:400}}.tags-wrapper .tags a:hover{opacity:1;transform:scale(1.1)}.tags-wrapper .tags a.active{box-shadow:0 5px 10px -5px var(--randomColor,rgba(0,0,0,.15));transform:scale(1.22);opacity:1}.tags-wrapper .tags a.active:hover{text-decoration:none}.theme-mode-light[data-v-7d2bb426]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-7d2bb426]::-moz-selection,.theme-mode-light code[class*=language-][data-v-7d2bb426] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-7d2bb426]::selection,.theme-mode-light code[class*=language-][data-v-7d2bb426] ::selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426]::selection,.theme-mode-light pre[class*=language-][data-v-7d2bb426] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-7d2bb426],.theme-mode-light .token.comment[data-v-7d2bb426],.theme-mode-light .token.doctype[data-v-7d2bb426],.theme-mode-light .token.prolog[data-v-7d2bb426]{color:#708090}.theme-mode-light .token.punctuation[data-v-7d2bb426]{color:#999}.theme-mode-light .namespace[data-v-7d2bb426]{opacity:.7}.theme-mode-light .token.boolean[data-v-7d2bb426],.theme-mode-light .token.constant[data-v-7d2bb426],.theme-mode-light .token.deleted[data-v-7d2bb426],.theme-mode-light .token.number[data-v-7d2bb426],.theme-mode-light .token.property[data-v-7d2bb426],.theme-mode-light .token.symbol[data-v-7d2bb426],.theme-mode-light .token.tag[data-v-7d2bb426]{color:#905}.theme-mode-light .token.attr-name[data-v-7d2bb426],.theme-mode-light .token.builtin[data-v-7d2bb426],.theme-mode-light .token.char[data-v-7d2bb426],.theme-mode-light .token.inserted[data-v-7d2bb426],.theme-mode-light .token.selector[data-v-7d2bb426],.theme-mode-light .token.string[data-v-7d2bb426]{color:#690}.theme-mode-light .language-css .token.string[data-v-7d2bb426],.theme-mode-light .style .token.string[data-v-7d2bb426],.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-7d2bb426],.theme-mode-light .token.attr-value[data-v-7d2bb426],.theme-mode-light .token.keyword[data-v-7d2bb426]{color:#07a}.theme-mode-light .token.class-name[data-v-7d2bb426],.theme-mode-light .token.function[data-v-7d2bb426]{color:#dd4a68}.theme-mode-light .token.important[data-v-7d2bb426],.theme-mode-light .token.regex[data-v-7d2bb426],.theme-mode-light .token.variable[data-v-7d2bb426]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-7d2bb426],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-7d2bb426]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-7d2bb426]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-7d2bb426]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-7d2bb426]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-7d2bb426]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-light pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-7d2bb426],.theme-mode-light .token.cdata[data-v-7d2bb426],.theme-mode-light .token.comment[data-v-7d2bb426],.theme-mode-light .token.doctype[data-v-7d2bb426],.theme-mode-light .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-light .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-light .token.attr-name[data-v-7d2bb426],.theme-mode-light .token.deleted[data-v-7d2bb426],.theme-mode-light .token.namespace[data-v-7d2bb426],.theme-mode-light .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-light .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-light .token.boolean[data-v-7d2bb426],.theme-mode-light .token.function[data-v-7d2bb426],.theme-mode-light .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-light .token.class-name[data-v-7d2bb426],.theme-mode-light .token.constant[data-v-7d2bb426],.theme-mode-light .token.property[data-v-7d2bb426],.theme-mode-light .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-light .token.atrule[data-v-7d2bb426],.theme-mode-light .token.builtin[data-v-7d2bb426],.theme-mode-light .token.important[data-v-7d2bb426],.theme-mode-light .token.keyword[data-v-7d2bb426],.theme-mode-light .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-7d2bb426],.theme-mode-light .token.char[data-v-7d2bb426],.theme-mode-light .token.regex[data-v-7d2bb426],.theme-mode-light .token.string[data-v-7d2bb426],.theme-mode-light .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-7d2bb426],.theme-mode-light .style .token.string[data-v-7d2bb426],.theme-mode-light .token.entity[data-v-7d2bb426],.theme-mode-light .token.operator[data-v-7d2bb426],.theme-mode-light .token.url[data-v-7d2bb426]{background:none}.theme-mode-light .token.bold[data-v-7d2bb426],.theme-mode-light .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-light .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-light .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-light .token.inserted[data-v-7d2bb426]{color:green}.theme-mode-dark[data-v-7d2bb426]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-7d2bb426],.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-dark pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-7d2bb426],.theme-mode-dark .token.cdata[data-v-7d2bb426],.theme-mode-dark .token.comment[data-v-7d2bb426],.theme-mode-dark .token.doctype[data-v-7d2bb426],.theme-mode-dark .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-dark .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-7d2bb426],.theme-mode-dark .token.deleted[data-v-7d2bb426],.theme-mode-dark .token.namespace[data-v-7d2bb426],.theme-mode-dark .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-7d2bb426],.theme-mode-dark .token.function[data-v-7d2bb426],.theme-mode-dark .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-7d2bb426],.theme-mode-dark .token.constant[data-v-7d2bb426],.theme-mode-dark .token.property[data-v-7d2bb426],.theme-mode-dark .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-7d2bb426],.theme-mode-dark .token.builtin[data-v-7d2bb426],.theme-mode-dark .token.important[data-v-7d2bb426],.theme-mode-dark .token.keyword[data-v-7d2bb426],.theme-mode-dark .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-7d2bb426],.theme-mode-dark .token.char[data-v-7d2bb426],.theme-mode-dark .token.regex[data-v-7d2bb426],.theme-mode-dark .token.string[data-v-7d2bb426],.theme-mode-dark .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-dark .token.entity[data-v-7d2bb426],.theme-mode-dark .token.operator[data-v-7d2bb426],.theme-mode-dark .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-7d2bb426],.theme-mode-dark .style .token.string[data-v-7d2bb426],.theme-mode-dark .token.entity[data-v-7d2bb426],.theme-mode-dark .token.operator[data-v-7d2bb426],.theme-mode-dark .token.url[data-v-7d2bb426]{background:none}.theme-mode-dark .token.bold[data-v-7d2bb426],.theme-mode-dark .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-dark .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-dark .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-dark .token.inserted[data-v-7d2bb426]{color:green}.theme-mode-read[data-v-7d2bb426]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-7d2bb426],.theme-mode-read pre[class*=language-][data-v-7d2bb426]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-7d2bb426]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-7d2bb426],.theme-mode-read pre[class*=language-][data-v-7d2bb426]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-7d2bb426]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-7d2bb426],.theme-mode-read .token.cdata[data-v-7d2bb426],.theme-mode-read .token.comment[data-v-7d2bb426],.theme-mode-read .token.doctype[data-v-7d2bb426],.theme-mode-read .token.prolog[data-v-7d2bb426]{color:#999}.theme-mode-read .token.punctuation[data-v-7d2bb426]{color:#ccc}.theme-mode-read .token.attr-name[data-v-7d2bb426],.theme-mode-read .token.deleted[data-v-7d2bb426],.theme-mode-read .token.namespace[data-v-7d2bb426],.theme-mode-read .token.tag[data-v-7d2bb426]{color:#e2777a}.theme-mode-read .token.function-name[data-v-7d2bb426]{color:#6196cc}.theme-mode-read .token.boolean[data-v-7d2bb426],.theme-mode-read .token.function[data-v-7d2bb426],.theme-mode-read .token.number[data-v-7d2bb426]{color:#f08d49}.theme-mode-read .token.class-name[data-v-7d2bb426],.theme-mode-read .token.constant[data-v-7d2bb426],.theme-mode-read .token.property[data-v-7d2bb426],.theme-mode-read .token.symbol[data-v-7d2bb426]{color:#f8c555}.theme-mode-read .token.atrule[data-v-7d2bb426],.theme-mode-read .token.builtin[data-v-7d2bb426],.theme-mode-read .token.important[data-v-7d2bb426],.theme-mode-read .token.keyword[data-v-7d2bb426],.theme-mode-read .token.selector[data-v-7d2bb426]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-7d2bb426],.theme-mode-read .token.char[data-v-7d2bb426],.theme-mode-read .token.regex[data-v-7d2bb426],.theme-mode-read .token.string[data-v-7d2bb426],.theme-mode-read .token.variable[data-v-7d2bb426]{color:#7ec699}.theme-mode-read .token.entity[data-v-7d2bb426],.theme-mode-read .token.operator[data-v-7d2bb426],.theme-mode-read .token.url[data-v-7d2bb426]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-7d2bb426],.theme-mode-read .style .token.string[data-v-7d2bb426],.theme-mode-read .token.entity[data-v-7d2bb426],.theme-mode-read .token.operator[data-v-7d2bb426],.theme-mode-read .token.url[data-v-7d2bb426]{background:none}.theme-mode-read .token.bold[data-v-7d2bb426],.theme-mode-read .token.important[data-v-7d2bb426]{font-weight:700}.theme-mode-read .token.italic[data-v-7d2bb426]{font-style:italic}.theme-mode-read .token.entity[data-v-7d2bb426]{cursor:help}.theme-mode-read .token.inserted[data-v-7d2bb426]{color:green}.home-wrapper .banner[data-v-7d2bb426]{width:100%;min-height:450px;margin-top:3.6rem;color:#fff;position:relative;overflow:hidden}.home-wrapper .banner .banner-conent[data-v-7d2bb426]{max-width:1100px;margin:0 auto;position:relative;z-index:1;overflow:hidden}.home-wrapper .banner .banner-conent .hero[data-v-7d2bb426]{text-align:center;margin-top:3rem}.home-wrapper .banner .banner-conent .hero img[data-v-7d2bb426]{max-width:100%;max-height:240px;display:block;margin:2rem auto 1.5rem}.home-wrapper .banner .banner-conent .hero h1[data-v-7d2bb426]{margin:0;font-size:3.2rem}.home-wrapper .banner .banner-conent .hero .action[data-v-7d2bb426],.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{margin:1.5rem auto}.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{max-width:40rem;font-size:1.1rem;line-height:1.3;opacity:.9}.home-wrapper .banner .banner-conent .hero .action-button[data-v-7d2bb426]{display:inline-block;font-size:1.2rem;background-color:#4274f4;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #255ef2;color:#fff}.home-wrapper .banner .banner-conent .hero .action-button[data-v-7d2bb426]:hover{background-color:#5582f5}.home-wrapper .banner .banner-conent .features[data-v-7d2bb426]{padding:2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home-wrapper .banner .banner-conent .feature[data-v-7d2bb426]{flex-grow:1;flex-basis:30%;max-width:30%;text-align:center}.home-wrapper .banner .banner-conent .feature a[data-v-7d2bb426]{color:inherit}.home-wrapper .banner .banner-conent .feature a .feature-img[data-v-7d2bb426]{width:10rem;height:10rem;animation:heart-7d2bb426 1.2s ease-in-out 0s infinite alternate;animation-play-state:paused}.home-wrapper .banner .banner-conent .feature a h2[data-v-7d2bb426]{font-weight:500;font-size:1.3rem;border-bottom:none;padding-bottom:0}.home-wrapper .banner .banner-conent .feature a p[data-v-7d2bb426]{opacity:.8;padding:0 .8rem}.home-wrapper .banner .banner-conent .feature:hover .feature-img[data-v-7d2bb426]{animation-play-state:running}.home-wrapper .banner .banner-conent .feature:hover h2[data-v-7d2bb426],.home-wrapper .banner .banner-conent .feature:hover p[data-v-7d2bb426]{color:#4274f4}.home-wrapper .banner .slide-banner[data-v-7d2bb426]{margin-top:2rem}.home-wrapper .banner .slide-banner .banner-wrapper[data-v-7d2bb426]{position:relative}.home-wrapper .banner .slide-banner .slide-banner-scroll[data-v-7d2bb426]{min-height:1px;overflow:hidden}.home-wrapper .banner .slide-banner .slide-banner-wrapper[data-v-7d2bb426]{height:300px}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item[data-v-7d2bb426]{display:inline-block;height:300px;width:100%;text-align:center}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a[data-v-7d2bb426]{color:inherit}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a .feature-img[data-v-7d2bb426]{width:10rem;height:10rem}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a h2[data-v-7d2bb426]{font-size:1.1rem;font-weight:500;border-bottom:none;padding-bottom:0}.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a p[data-v-7d2bb426]{opacity:.8;padding:0 .8rem}.home-wrapper .banner .slide-banner .docs-wrapper[data-v-7d2bb426]{position:absolute;bottom:25px;left:50%;transform:translateX(-50%)}.home-wrapper .banner .slide-banner .docs-wrapper .doc[data-v-7d2bb426]{display:inline-block;margin:0 4px;width:8px;height:8px;border-radius:50%;background:var(--textColor);opacity:.9}.home-wrapper .banner .slide-banner .docs-wrapper .doc.active[data-v-7d2bb426]{opacity:.5}.home-wrapper .banner.hide-banner[data-v-7d2bb426]{display:none}.home-wrapper .banner.hide-banner+.main-wrapper[data-v-7d2bb426]{margin-top:4.5rem}.home-wrapper .main-wrapper[data-v-7d2bb426]{margin-top:2rem}.home-wrapper .main-wrapper .main-left .card-box[data-v-7d2bb426]{margin-bottom:2rem}.home-wrapper .main-wrapper .main-left .pagination[data-v-7d2bb426]{margin-bottom:3rem}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]{padding:0 2rem;overflow:hidden;border:none}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]>:first-child{padding-top:2rem}.home-wrapper .main-wrapper .main-left .theme-vdoing-content[data-v-7d2bb426]>:last-child{padding-bottom:2rem}.home-wrapper .main-wrapper .main-right .custom-html-box[data-v-7d2bb426]{padding:0;overflow:hidden}@media (max-width:1025px){.home-wrapper .banner .banner-conent .hero h1[data-v-7d2bb426]{font-size:2.5rem}.home-wrapper .banner .banner-conent .hero .description[data-v-7d2bb426]{font-size:1rem}.home-wrapper .banner .banner-conent .feature a h2[data-v-7d2bb426]{font-size:1.1rem}.home-wrapper .banner .banner-conent .feature a .feature-img[data-v-7d2bb426]{width:9rem;height:9rem}}@media (max-width:719px){.home-wrapper .banner .banner-conent .features[data-v-7d2bb426]{display:none!important}}@media (max-width:419px){.home-wrapper .banner-conent[data-v-7d2bb426]{padding-left:1.5rem;padding-right:1.5rem}.home-wrapper .banner-conent .hero img[data-v-7d2bb426]{max-height:210px;margin:2rem auto 1.2rem}.home-wrapper .banner-conent .hero h1[data-v-7d2bb426]{font-size:2rem}.home-wrapper .banner-conent .hero .action[data-v-7d2bb426],.home-wrapper .banner-conent .hero .description[data-v-7d2bb426],.home-wrapper .banner-conent .hero h1[data-v-7d2bb426]{margin:1.2rem auto}.home-wrapper .banner-conent .hero .description[data-v-7d2bb426]{font-size:1.2rem}.home-wrapper .banner-conent .hero .action-button[data-v-7d2bb426]{font-size:1rem;padding:.6rem 1.2rem}.home-wrapper .banner-conent .feature h2[data-v-7d2bb426]{font-size:1.25rem}}@media (max-width:719px){.theme-style-line .main-wrapper[data-v-7d2bb426]{margin-top:-1px}}@keyframes heart-7d2bb426{0%{transform:translate(0)}to{transform:translateY(8px)}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/neutrino-proxy/assets/img/search.237d6f6a.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#4274f4}.search-box .suggestions{background:#fff;min-width:500px;max-width:700px;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;border-radius:4px;cursor:pointer;width:100%}.search-box .suggestion a{display:block;white-space:normal;color:#415b75;width:100%}.search-box .suggestion a .parent-page-title{color:#fff;font-weight:600;background-color:#4274f4;padding:5px}.search-box .suggestion a .suggestion-row{border-collapse:collapse;width:100%;display:table}.search-box .suggestion a .suggestion-row .page-title{width:35%;background:#f5f5f5;border:1px solid #eaecef;border-left:none;display:table-cell;text-align:right;padding:5px;font-weight:600}.search-box .suggestion a .suggestion-row .suggestion-content{font-weight:400;border:1px solid #eaecef;border-right:none;width:65%;display:table-cell;padding:5px}.search-box .suggestion a .suggestion-row .suggestion-content .highlight{text-decoration:underline}.search-box .suggestion a .suggestion-row .suggestion-content .header{font-weight:600}.search-box .suggestion.focused{background-color:#f3f4f5}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}@media (max-width:719px){.sidebar-button{display:block}}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (min-width:720px){.sidebar-button{width:40px;height:40px;display:inline-block;position:fixed;left:0;top:4.6rem;text-align:center;line-height:44px;margin:5px 8px;color:#888;border-radius:50%;padding:0;transition:all .2s}.sidebar-button:hover{background:#4274f4;color:#fff;box-shadow:0 0 6px #4274f4}.sidebar-button .icon{display:inline;width:1rem;height:1rem}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:var(--textColor)}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid var(--borderColor);padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#4274f4}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #4274f4;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{font-weight:600;font-size:inherit}.dropdown-wrapper .dropdown-title:hover{color:#4274f4}.dropdown-wrapper .dropdown-title .link-title{display:none}.dropdown-wrapper .dropdown-title .title{display:inline-block!important}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--mainBg);padding:.6rem 0;border-bottom-color:var(--borderColor);border:1px solid var(--borderColor);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}.nav-item .dropdown-title a.router-link-active,.nav-item .dropdown-title a:hover{margin-bottom:-2px;border-bottom:2px solid #517ff5}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#4274f4}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:959px){.nav-links .nav-item{margin-left:1.2rem}}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:var(--textColor)}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #517ff5}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem;transition:transform .3s}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--textColor);position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}.hide-navbar .navbar{transform:translateY(-100%)}@media (max-width:959px){.navbar .site-name{display:none}}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:860px;padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block;float:left;margin:0 2rem .5rem 0}.page-edit .edit-link a{margin-right:.25rem}.page-edit .tags{float:left}.page-edit .tags a{margin:0 .8rem .5rem 0;display:inline-block;color:var(--textLightenColor);padding:.2rem .7rem;font-size:.9em;background-color:hsla(0,0%,50.2%,.08);border-radius:3px;opacity:.8}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:var(--textColor);opacity:.8}.page-edit .last-updated .time{font-weight:400;color:#aaa}@media (max-width:719px){.page-edit .edit-link,.page-edit .tags{margin-bottom:.5rem}.page-edit .last-updated{width:100%;font-size:.8em;text-align:left}}.page-nav{max-width:860px;padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid var(--borderColor);padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page-nav-centre-wrap .page-nav-centre{position:fixed;top:50%;width:80px;height:70px;margin-top:-35px;outline:0;transition:all .2s;border-radius:3px;opacity:.55;z-index:99}@media (max-width:1340px){.page-nav-centre-wrap .page-nav-centre{width:50px}}@media (max-width:960px){.page-nav-centre-wrap .page-nav-centre{display:none}}.page-nav-centre-wrap .page-nav-centre:hover{background:hsla(0,0%,60%,.15);opacity:1}.page-nav-centre-wrap .page-nav-centre:hover .tooltip{display:block}.page-nav-centre-wrap .page-nav-centre:before{content:"";display:block;width:10px;height:10px;border-top:2px solid #999;border-right:2px solid #999;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.page-nav-centre-wrap .page-nav-centre .tooltip{display:none;background:rgba(0,0,0,.5);color:#fff;padding:4px 8px;font-size:13px;border-radius:3px;position:fixed;max-width:200px;z-index:99}.page-nav-centre-wrap .page-nav-centre-prev{left:0}.page-nav-centre-wrap .page-nav-centre-prev:before{transform:rotate(-135deg)}.page-nav-centre-wrap .page-nav-centre-next{right:0}.page-nav-centre-wrap .page-nav-centre-next:before{transform:rotate(45deg)}.sidebar-open .page-nav-centre-wrap .page-nav-centre-prev{left:18rem}.no-sidebar .page-nav-centre-wrap .page-nav-centre-prev{left:0}.theme-mode-light[data-v-06225672]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-06225672]::-moz-selection,.theme-mode-light code[class*=language-][data-v-06225672] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-06225672]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-06225672] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-06225672]::selection,.theme-mode-light code[class*=language-][data-v-06225672] ::selection,.theme-mode-light pre[class*=language-][data-v-06225672]::selection,.theme-mode-light pre[class*=language-][data-v-06225672] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-06225672],.theme-mode-light .token.comment[data-v-06225672],.theme-mode-light .token.doctype[data-v-06225672],.theme-mode-light .token.prolog[data-v-06225672]{color:#708090}.theme-mode-light .token.punctuation[data-v-06225672]{color:#999}.theme-mode-light .namespace[data-v-06225672]{opacity:.7}.theme-mode-light .token.boolean[data-v-06225672],.theme-mode-light .token.constant[data-v-06225672],.theme-mode-light .token.deleted[data-v-06225672],.theme-mode-light .token.number[data-v-06225672],.theme-mode-light .token.property[data-v-06225672],.theme-mode-light .token.symbol[data-v-06225672],.theme-mode-light .token.tag[data-v-06225672]{color:#905}.theme-mode-light .token.attr-name[data-v-06225672],.theme-mode-light .token.builtin[data-v-06225672],.theme-mode-light .token.char[data-v-06225672],.theme-mode-light .token.inserted[data-v-06225672],.theme-mode-light .token.selector[data-v-06225672],.theme-mode-light .token.string[data-v-06225672]{color:#690}.theme-mode-light .language-css .token.string[data-v-06225672],.theme-mode-light .style .token.string[data-v-06225672],.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-06225672],.theme-mode-light .token.attr-value[data-v-06225672],.theme-mode-light .token.keyword[data-v-06225672]{color:#07a}.theme-mode-light .token.class-name[data-v-06225672],.theme-mode-light .token.function[data-v-06225672]{color:#dd4a68}.theme-mode-light .token.important[data-v-06225672],.theme-mode-light .token.regex[data-v-06225672],.theme-mode-light .token.variable[data-v-06225672]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-06225672],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-06225672]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-06225672]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-06225672]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-06225672]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-06225672]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-06225672]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-06225672]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-light pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-06225672],.theme-mode-light .token.cdata[data-v-06225672],.theme-mode-light .token.comment[data-v-06225672],.theme-mode-light .token.doctype[data-v-06225672],.theme-mode-light .token.prolog[data-v-06225672]{color:#999}.theme-mode-light .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-light .token.attr-name[data-v-06225672],.theme-mode-light .token.deleted[data-v-06225672],.theme-mode-light .token.namespace[data-v-06225672],.theme-mode-light .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-light .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-light .token.boolean[data-v-06225672],.theme-mode-light .token.function[data-v-06225672],.theme-mode-light .token.number[data-v-06225672]{color:#f08d49}.theme-mode-light .token.class-name[data-v-06225672],.theme-mode-light .token.constant[data-v-06225672],.theme-mode-light .token.property[data-v-06225672],.theme-mode-light .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-light .token.atrule[data-v-06225672],.theme-mode-light .token.builtin[data-v-06225672],.theme-mode-light .token.important[data-v-06225672],.theme-mode-light .token.keyword[data-v-06225672],.theme-mode-light .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-06225672],.theme-mode-light .token.char[data-v-06225672],.theme-mode-light .token.regex[data-v-06225672],.theme-mode-light .token.string[data-v-06225672],.theme-mode-light .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-06225672],.theme-mode-light .style .token.string[data-v-06225672],.theme-mode-light .token.entity[data-v-06225672],.theme-mode-light .token.operator[data-v-06225672],.theme-mode-light .token.url[data-v-06225672]{background:none}.theme-mode-light .token.bold[data-v-06225672],.theme-mode-light .token.important[data-v-06225672]{font-weight:700}.theme-mode-light .token.italic[data-v-06225672]{font-style:italic}.theme-mode-light .token.entity[data-v-06225672]{cursor:help}.theme-mode-light .token.inserted[data-v-06225672]{color:green}.theme-mode-dark[data-v-06225672]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-06225672],.theme-mode-dark pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-dark pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-06225672],.theme-mode-dark .token.cdata[data-v-06225672],.theme-mode-dark .token.comment[data-v-06225672],.theme-mode-dark .token.doctype[data-v-06225672],.theme-mode-dark .token.prolog[data-v-06225672]{color:#999}.theme-mode-dark .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-06225672],.theme-mode-dark .token.deleted[data-v-06225672],.theme-mode-dark .token.namespace[data-v-06225672],.theme-mode-dark .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-06225672],.theme-mode-dark .token.function[data-v-06225672],.theme-mode-dark .token.number[data-v-06225672]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-06225672],.theme-mode-dark .token.constant[data-v-06225672],.theme-mode-dark .token.property[data-v-06225672],.theme-mode-dark .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-06225672],.theme-mode-dark .token.builtin[data-v-06225672],.theme-mode-dark .token.important[data-v-06225672],.theme-mode-dark .token.keyword[data-v-06225672],.theme-mode-dark .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-06225672],.theme-mode-dark .token.char[data-v-06225672],.theme-mode-dark .token.regex[data-v-06225672],.theme-mode-dark .token.string[data-v-06225672],.theme-mode-dark .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-dark .token.entity[data-v-06225672],.theme-mode-dark .token.operator[data-v-06225672],.theme-mode-dark .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-06225672],.theme-mode-dark .style .token.string[data-v-06225672],.theme-mode-dark .token.entity[data-v-06225672],.theme-mode-dark .token.operator[data-v-06225672],.theme-mode-dark .token.url[data-v-06225672]{background:none}.theme-mode-dark .token.bold[data-v-06225672],.theme-mode-dark .token.important[data-v-06225672]{font-weight:700}.theme-mode-dark .token.italic[data-v-06225672]{font-style:italic}.theme-mode-dark .token.entity[data-v-06225672]{cursor:help}.theme-mode-dark .token.inserted[data-v-06225672]{color:green}.theme-mode-read[data-v-06225672]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-06225672],.theme-mode-read pre[class*=language-][data-v-06225672]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-06225672]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-06225672],.theme-mode-read pre[class*=language-][data-v-06225672]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-06225672]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-06225672],.theme-mode-read .token.cdata[data-v-06225672],.theme-mode-read .token.comment[data-v-06225672],.theme-mode-read .token.doctype[data-v-06225672],.theme-mode-read .token.prolog[data-v-06225672]{color:#999}.theme-mode-read .token.punctuation[data-v-06225672]{color:#ccc}.theme-mode-read .token.attr-name[data-v-06225672],.theme-mode-read .token.deleted[data-v-06225672],.theme-mode-read .token.namespace[data-v-06225672],.theme-mode-read .token.tag[data-v-06225672]{color:#e2777a}.theme-mode-read .token.function-name[data-v-06225672]{color:#6196cc}.theme-mode-read .token.boolean[data-v-06225672],.theme-mode-read .token.function[data-v-06225672],.theme-mode-read .token.number[data-v-06225672]{color:#f08d49}.theme-mode-read .token.class-name[data-v-06225672],.theme-mode-read .token.constant[data-v-06225672],.theme-mode-read .token.property[data-v-06225672],.theme-mode-read .token.symbol[data-v-06225672]{color:#f8c555}.theme-mode-read .token.atrule[data-v-06225672],.theme-mode-read .token.builtin[data-v-06225672],.theme-mode-read .token.important[data-v-06225672],.theme-mode-read .token.keyword[data-v-06225672],.theme-mode-read .token.selector[data-v-06225672]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-06225672],.theme-mode-read .token.char[data-v-06225672],.theme-mode-read .token.regex[data-v-06225672],.theme-mode-read .token.string[data-v-06225672],.theme-mode-read .token.variable[data-v-06225672]{color:#7ec699}.theme-mode-read .token.entity[data-v-06225672],.theme-mode-read .token.operator[data-v-06225672],.theme-mode-read .token.url[data-v-06225672]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-06225672],.theme-mode-read .style .token.string[data-v-06225672],.theme-mode-read .token.entity[data-v-06225672],.theme-mode-read .token.operator[data-v-06225672],.theme-mode-read .token.url[data-v-06225672]{background:none}.theme-mode-read .token.bold[data-v-06225672],.theme-mode-read .token.important[data-v-06225672]{font-weight:700}.theme-mode-read .token.italic[data-v-06225672]{font-style:italic}.theme-mode-read .token.entity[data-v-06225672]{cursor:help}.theme-mode-read .token.inserted[data-v-06225672]{color:green}.articleInfo-wrap[data-v-06225672]{max-width:860px}.theme-style-line .articleInfo-wrap .articleInfo[data-v-06225672]{padding-top:.5rem}.articleInfo-wrap[data-v-06225672]{position:relative;z-index:1;color:#888}.articleInfo-wrap .articleInfo[data-v-06225672]{overflow:hidden;font-size:.92rem}.articleInfo-wrap .articleInfo .breadcrumbs[data-v-06225672]{margin:0;padding:0;overflow:hidden;display:inline-block;line-height:2rem}@media (max-width:960px){.articleInfo-wrap .articleInfo .breadcrumbs[data-v-06225672]{width:100%}}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]{list-style-type:none;float:left;padding-right:5px}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]:after{content:"/";margin-left:5px;color:#999}.articleInfo-wrap .articleInfo .breadcrumbs li[data-v-06225672]:last-child:after{content:""}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]{color:#888}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]:before{font-size:.92rem}.articleInfo-wrap .articleInfo .breadcrumbs li a[data-v-06225672]:hover{color:#4274f4}.articleInfo-wrap .articleInfo .breadcrumbs li .icon-home[data-v-06225672]{text-decoration:none}.articleInfo-wrap .articleInfo .info[data-v-06225672]{float:right;line-height:32px}@media (max-width:960px){.articleInfo-wrap .articleInfo .info[data-v-06225672]{float:left}}.articleInfo-wrap .articleInfo .info div[data-v-06225672]{float:left;margin-left:20px;font-size:.8rem}@media (max-width:960px){.articleInfo-wrap .articleInfo .info div[data-v-06225672]{margin:0 20px 0 0}}.articleInfo-wrap .articleInfo .info div[data-v-06225672]:before{margin-right:3px}.articleInfo-wrap .articleInfo .info div a[data-v-06225672]{color:#888}.articleInfo-wrap .articleInfo .info div a[data-v-06225672]:hover{text-decoration:none}.articleInfo-wrap .articleInfo .info div a.beLink[data-v-06225672]:hover{color:#4274f4;text-decoration:underline}.theme-mode-light[data-v-2cf874fa]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-2cf874fa]::-moz-selection,.theme-mode-light code[class*=language-][data-v-2cf874fa] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-2cf874fa]::selection,.theme-mode-light code[class*=language-][data-v-2cf874fa] ::selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa]::selection,.theme-mode-light pre[class*=language-][data-v-2cf874fa] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-2cf874fa],.theme-mode-light .token.comment[data-v-2cf874fa],.theme-mode-light .token.doctype[data-v-2cf874fa],.theme-mode-light .token.prolog[data-v-2cf874fa]{color:#708090}.theme-mode-light .token.punctuation[data-v-2cf874fa]{color:#999}.theme-mode-light .namespace[data-v-2cf874fa]{opacity:.7}.theme-mode-light .token.boolean[data-v-2cf874fa],.theme-mode-light .token.constant[data-v-2cf874fa],.theme-mode-light .token.deleted[data-v-2cf874fa],.theme-mode-light .token.number[data-v-2cf874fa],.theme-mode-light .token.property[data-v-2cf874fa],.theme-mode-light .token.symbol[data-v-2cf874fa],.theme-mode-light .token.tag[data-v-2cf874fa]{color:#905}.theme-mode-light .token.attr-name[data-v-2cf874fa],.theme-mode-light .token.builtin[data-v-2cf874fa],.theme-mode-light .token.char[data-v-2cf874fa],.theme-mode-light .token.inserted[data-v-2cf874fa],.theme-mode-light .token.selector[data-v-2cf874fa],.theme-mode-light .token.string[data-v-2cf874fa]{color:#690}.theme-mode-light .language-css .token.string[data-v-2cf874fa],.theme-mode-light .style .token.string[data-v-2cf874fa],.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-2cf874fa],.theme-mode-light .token.attr-value[data-v-2cf874fa],.theme-mode-light .token.keyword[data-v-2cf874fa]{color:#07a}.theme-mode-light .token.class-name[data-v-2cf874fa],.theme-mode-light .token.function[data-v-2cf874fa]{color:#dd4a68}.theme-mode-light .token.important[data-v-2cf874fa],.theme-mode-light .token.regex[data-v-2cf874fa],.theme-mode-light .token.variable[data-v-2cf874fa]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-2cf874fa],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-2cf874fa]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-2cf874fa]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-2cf874fa]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-2cf874fa]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-2cf874fa]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-light pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-2cf874fa],.theme-mode-light .token.cdata[data-v-2cf874fa],.theme-mode-light .token.comment[data-v-2cf874fa],.theme-mode-light .token.doctype[data-v-2cf874fa],.theme-mode-light .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-light .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-light .token.attr-name[data-v-2cf874fa],.theme-mode-light .token.deleted[data-v-2cf874fa],.theme-mode-light .token.namespace[data-v-2cf874fa],.theme-mode-light .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-light .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-light .token.boolean[data-v-2cf874fa],.theme-mode-light .token.function[data-v-2cf874fa],.theme-mode-light .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-light .token.class-name[data-v-2cf874fa],.theme-mode-light .token.constant[data-v-2cf874fa],.theme-mode-light .token.property[data-v-2cf874fa],.theme-mode-light .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-light .token.atrule[data-v-2cf874fa],.theme-mode-light .token.builtin[data-v-2cf874fa],.theme-mode-light .token.important[data-v-2cf874fa],.theme-mode-light .token.keyword[data-v-2cf874fa],.theme-mode-light .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-2cf874fa],.theme-mode-light .token.char[data-v-2cf874fa],.theme-mode-light .token.regex[data-v-2cf874fa],.theme-mode-light .token.string[data-v-2cf874fa],.theme-mode-light .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-2cf874fa],.theme-mode-light .style .token.string[data-v-2cf874fa],.theme-mode-light .token.entity[data-v-2cf874fa],.theme-mode-light .token.operator[data-v-2cf874fa],.theme-mode-light .token.url[data-v-2cf874fa]{background:none}.theme-mode-light .token.bold[data-v-2cf874fa],.theme-mode-light .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-light .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-light .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-light .token.inserted[data-v-2cf874fa]{color:green}.theme-mode-dark[data-v-2cf874fa]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-2cf874fa],.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-dark pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-2cf874fa],.theme-mode-dark .token.cdata[data-v-2cf874fa],.theme-mode-dark .token.comment[data-v-2cf874fa],.theme-mode-dark .token.doctype[data-v-2cf874fa],.theme-mode-dark .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-dark .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-2cf874fa],.theme-mode-dark .token.deleted[data-v-2cf874fa],.theme-mode-dark .token.namespace[data-v-2cf874fa],.theme-mode-dark .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-2cf874fa],.theme-mode-dark .token.function[data-v-2cf874fa],.theme-mode-dark .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-2cf874fa],.theme-mode-dark .token.constant[data-v-2cf874fa],.theme-mode-dark .token.property[data-v-2cf874fa],.theme-mode-dark .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-2cf874fa],.theme-mode-dark .token.builtin[data-v-2cf874fa],.theme-mode-dark .token.important[data-v-2cf874fa],.theme-mode-dark .token.keyword[data-v-2cf874fa],.theme-mode-dark .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-2cf874fa],.theme-mode-dark .token.char[data-v-2cf874fa],.theme-mode-dark .token.regex[data-v-2cf874fa],.theme-mode-dark .token.string[data-v-2cf874fa],.theme-mode-dark .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-dark .token.entity[data-v-2cf874fa],.theme-mode-dark .token.operator[data-v-2cf874fa],.theme-mode-dark .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-2cf874fa],.theme-mode-dark .style .token.string[data-v-2cf874fa],.theme-mode-dark .token.entity[data-v-2cf874fa],.theme-mode-dark .token.operator[data-v-2cf874fa],.theme-mode-dark .token.url[data-v-2cf874fa]{background:none}.theme-mode-dark .token.bold[data-v-2cf874fa],.theme-mode-dark .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-dark .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-dark .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-dark .token.inserted[data-v-2cf874fa]{color:green}.theme-mode-read[data-v-2cf874fa]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-2cf874fa],.theme-mode-read pre[class*=language-][data-v-2cf874fa]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-2cf874fa]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-2cf874fa],.theme-mode-read pre[class*=language-][data-v-2cf874fa]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-2cf874fa]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-2cf874fa],.theme-mode-read .token.cdata[data-v-2cf874fa],.theme-mode-read .token.comment[data-v-2cf874fa],.theme-mode-read .token.doctype[data-v-2cf874fa],.theme-mode-read .token.prolog[data-v-2cf874fa]{color:#999}.theme-mode-read .token.punctuation[data-v-2cf874fa]{color:#ccc}.theme-mode-read .token.attr-name[data-v-2cf874fa],.theme-mode-read .token.deleted[data-v-2cf874fa],.theme-mode-read .token.namespace[data-v-2cf874fa],.theme-mode-read .token.tag[data-v-2cf874fa]{color:#e2777a}.theme-mode-read .token.function-name[data-v-2cf874fa]{color:#6196cc}.theme-mode-read .token.boolean[data-v-2cf874fa],.theme-mode-read .token.function[data-v-2cf874fa],.theme-mode-read .token.number[data-v-2cf874fa]{color:#f08d49}.theme-mode-read .token.class-name[data-v-2cf874fa],.theme-mode-read .token.constant[data-v-2cf874fa],.theme-mode-read .token.property[data-v-2cf874fa],.theme-mode-read .token.symbol[data-v-2cf874fa]{color:#f8c555}.theme-mode-read .token.atrule[data-v-2cf874fa],.theme-mode-read .token.builtin[data-v-2cf874fa],.theme-mode-read .token.important[data-v-2cf874fa],.theme-mode-read .token.keyword[data-v-2cf874fa],.theme-mode-read .token.selector[data-v-2cf874fa]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-2cf874fa],.theme-mode-read .token.char[data-v-2cf874fa],.theme-mode-read .token.regex[data-v-2cf874fa],.theme-mode-read .token.string[data-v-2cf874fa],.theme-mode-read .token.variable[data-v-2cf874fa]{color:#7ec699}.theme-mode-read .token.entity[data-v-2cf874fa],.theme-mode-read .token.operator[data-v-2cf874fa],.theme-mode-read .token.url[data-v-2cf874fa]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-2cf874fa],.theme-mode-read .style .token.string[data-v-2cf874fa],.theme-mode-read .token.entity[data-v-2cf874fa],.theme-mode-read .token.operator[data-v-2cf874fa],.theme-mode-read .token.url[data-v-2cf874fa]{background:none}.theme-mode-read .token.bold[data-v-2cf874fa],.theme-mode-read .token.important[data-v-2cf874fa]{font-weight:700}.theme-mode-read .token.italic[data-v-2cf874fa]{font-style:italic}.theme-mode-read .token.entity[data-v-2cf874fa]{cursor:help}.theme-mode-read .token.inserted[data-v-2cf874fa]{color:green}.theme-vdoing-content[data-v-2cf874fa]{margin-bottom:3.6rem}.title-tag[data-v-2cf874fa]{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}dd[data-v-2cf874fa],dl[data-v-2cf874fa]{margin:0}.column-wrapper[data-v-2cf874fa]{margin-top:1rem;display:flex;padding-bottom:2rem;border-bottom:1px solid var(--borderColor)}.column-wrapper img[data-v-2cf874fa]{width:80px;height:80px;border-radius:2px;margin-right:1rem}.column-wrapper .column-info .title[data-v-2cf874fa]{font-size:1.6rem}.column-wrapper .column-info .description[data-v-2cf874fa]{color:var(--textColor);opacity:.8;margin:.5rem 0}.catalogue-wrapper .catalogue-title[data-v-2cf874fa]{font-size:1.45rem;margin:2rem 0}.catalogue-wrapper .catalogue-content dl[data-v-2cf874fa]{margin-bottom:1.8rem}.catalogue-wrapper .catalogue-content dl.inline[data-v-2cf874fa]{display:inline-block;width:50%;margin-bottom:1rem}@media (max-width:419px){.catalogue-wrapper .catalogue-content dl.inline[data-v-2cf874fa]{width:100%}}.catalogue-wrapper .catalogue-content dl.inline a[data-v-2cf874fa]{width:100%}.catalogue-wrapper .catalogue-content dl:not(.inline) dt[data-v-2cf874fa]{margin-top:-3.6rem;padding-top:3.6rem}.catalogue-wrapper .catalogue-content dl dt[data-v-2cf874fa]{font-size:1.1rem}.catalogue-wrapper .catalogue-content dl dt:hover .header-anchor[data-v-2cf874fa]{opacity:1}.catalogue-wrapper .catalogue-content dl dd[data-v-2cf874fa]{margin-top:.7rem;margin-left:1rem}.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor){margin-bottom:.5rem;display:inline-block;width:50%}.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor):hover{color:#ff5722;text-decoration:none}@media (max-width:720px){.catalogue-wrapper .catalogue-content dl dd a[data-v-2cf874fa]:not(.header-anchor){width:100%}}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap[data-v-2cf874fa]{margin:5px 0 8px;font-size:.95rem}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap>a[data-v-2cf874fa]{padding-left:1rem;box-sizing:border-box}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap .sub-title[data-v-2cf874fa]{margin-top:-3.6rem;padding-top:3.6rem;margin-bottom:6px;font-size:1rem}.catalogue-wrapper .catalogue-content dl .sub-cat-wrap:hover .header-anchor[data-v-2cf874fa]{opacity:1}.theme-style-line .right-menu-wrapper .right-menu-margin{border-left:1px solid var(--borderColor)}.right-menu-wrapper{width:230px;float:right;margin-right:-285px;position:sticky;top:0;font-size:.8rem}.right-menu-wrapper .right-menu-margin{margin-top:4.6rem;border-radius:3px;overflow:hidden}.right-menu-wrapper .right-menu-title{padding:10px 15px 0;background:var(--mainBg);font-size:1rem}.right-menu-wrapper .right-menu-title:after{content:"";display:block;width:100%;height:1px;background:var(--borderColor);margin-top:10px}.right-menu-wrapper .right-menu-content{max-height:80vh;position:relative;overflow:hidden;background:var(--mainBg);padding:4px 3px 4px 0}.right-menu-wrapper .right-menu-content::-webkit-scrollbar{width:3px;height:3px}.right-menu-wrapper .right-menu-content::-webkit-scrollbar-track-piece{background:none}.right-menu-wrapper .right-menu-content::-webkit-scrollbar-thumb:vertical{background-color:hsla(0,0%,49%,.3)}.right-menu-wrapper .right-menu-content:hover{overflow-y:auto;padding-right:0}.right-menu-wrapper .right-menu-content .right-menu-item{padding:4px 15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative}.right-menu-wrapper .right-menu-content .right-menu-item.level2{font-size:.8rem}.right-menu-wrapper .right-menu-content .right-menu-item.level3{padding-left:27px}.right-menu-wrapper .right-menu-content .right-menu-item.level4{padding-left:37px}.right-menu-wrapper .right-menu-content .right-menu-item.level5{padding-left:47px}.right-menu-wrapper .right-menu-content .right-menu-item.level6{padding-left:57px}.right-menu-wrapper .right-menu-content .right-menu-item.active:before{content:"";position:absolute;top:5px;left:0;width:3px;height:14px;background:#4274f4;border-radius:0 4px 4px 0}.right-menu-wrapper .right-menu-content .right-menu-item.active a{color:#4274f4;opacity:1}.right-menu-wrapper .right-menu-content .right-menu-item a{color:var(--textColor);opacity:.75;display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.right-menu-wrapper .right-menu-content .right-menu-item a:hover{opacity:1}.right-menu-wrapper .right-menu-content:hover{color:#4274f4}.page>*{max-width:860px;margin:0 auto;padding:1rem 2.5rem 2rem}.page>:not(.footer){background:var(--mainBg);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);margin-bottom:1rem}@media (min-width:940px){.page>:not(.footer){border-radius:2px}}@media (max-width:959px){.page>*{padding:1rem 2rem}}@media (max-width:419px){.page>*{padding:1rem 1.5rem}}.page{padding-bottom:2rem;display:block}@media (max-width:719px){.page{padding-top:3.6rem}}@media (min-width:719px){.page{padding-top:5.1rem}}@media (min-width:719px){.theme-style-line .page{padding-top:3.6rem}}.theme-style-line .page>:not(.footer){box-shadow:0 0}@media (min-width:720px){.theme-style-line .page .placeholder{height:1.2rem}}.theme-vdoing-wrapper .content-wrapper{position:relative}.theme-vdoing-wrapper h1 .title-tag{height:1.5rem;line-height:1.5rem;border:1px solid #ff5722;color:#ff5722;font-size:1rem;padding:0 .4rem;border-radius:.2rem;margin-left:.5rem;transform:translateY(-.25rem);display:inline-block}.theme-vdoing-wrapper h1 img{margin-bottom:-.2rem;margin-right:.2rem;max-width:2.2rem;max-height:2.2rem}.theme-vdoing-wrapper{--linesColor:rgba(50,0,0,0.05)}.theme-vdoing-wrapper.bg-style-1{background-image:linear-gradient(90deg,var(--linesColor) 3%,transparent 0),linear-gradient(0deg,var(--linesColor) 3%,transparent 0);background-position:50%;background-size:20px 20px}.theme-vdoing-wrapper.bg-style-2{background-image:repeating-linear-gradient(0,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:30px 30px}.theme-vdoing-wrapper.bg-style-3{background-image:repeating-linear-gradient(90deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:30px 30px}.theme-vdoing-wrapper.bg-style-4{background-image:repeating-linear-gradient(-45deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:20px 20px}.theme-vdoing-wrapper.bg-style-5{background-image:repeating-linear-gradient(45deg,var(--linesColor),var(--linesColor) 1px,transparent 0,transparent 50%);background-size:20px 20px}.theme-vdoing-wrapper.bg-style-6{background-image:radial-gradient(var(--linesColor) 1px,transparent 0);background-size:10px 10px}.theme-mode-dark .theme-vdoing-wrapper{--linesColor:hsla(0,0%,49%,0.05)}@media (min-width:720px) and (max-width:1279px){.have-rightmenu .page{padding-right:.8rem!important}}@media (max-width:1279px){.have-rightmenu .right-menu-wrapper{display:none}}@media (min-width:1280px){.have-rightmenu .sidebar .sidebar-sub-headers{display:none}}.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar,.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar-button{display:none}@media (min-width:720px){.theme-container.only-sidebarItem:not(.have-rightmenu) .page{padding-left:.8rem!important}}@media (max-width:719px){.theme-container.only-sidebarItem:not(.have-rightmenu) .page{padding-left:0!important}.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar,.theme-container.only-sidebarItem:not(.have-rightmenu) .sidebar-button{display:block}}@media (min-width:720px) and (max-width:1279px){.theme-container.only-sidebarItem.have-rightmenu .sidebar,.theme-container.only-sidebarItem.have-rightmenu .sidebar-button{display:block}}@media (min-width:1280px){.theme-container.only-sidebarItem.have-rightmenu .sidebar,.theme-container.only-sidebarItem.have-rightmenu .sidebar-button{display:none}}.categories-page .categories-wrapper{position:sticky;top:4.5rem;max-height:calc(100vh - 10rem);min-height:4.2rem}@media (max-width:719px){.categories-page .categories-wrapper{display:none}}.categories-page .categories-wrapper .categories{max-height:calc(100vh - 14rem);min-height:2.2rem;overflow-y:auto;transition:all .2s;position:relative}.categories-page .categories-wrapper .categories a{padding-right:1.8rem}.categories-page .categories-wrapper .categories a span{right:.4rem}.categories-page .categories-wrapper .categories::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.05)}.categories-page .categories-wrapper .categories::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.15)}.categories-page .categories-wrapper .categories:hover::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.1)}.categories-page .categories-wrapper .categories:hover::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25)}.categories-page .main-left .categories-wrapper{position:relative;top:0;padding:.9rem 1.5rem;margin-bottom:.9rem;max-height:15rem;border-radius:0;display:none}@media (max-width:719px){.categories-page .main-left .categories-wrapper{display:block}}.categories-page .main-left .categories-wrapper .categories{max-height:12.3rem}@media (max-width:719px){.theme-style-line .categories-page .main-left .categories-wrapper{margin-top:-.91rem;margin-bottom:-1px;padding:.9rem .2rem .5rem}}.tags-page .tags-wrapper{position:sticky;top:4.5rem;max-height:calc(100vh - 10rem);min-height:4.2rem}@media (max-width:719px){.tags-page .tags-wrapper{display:none}}.tags-page .tags-wrapper .tags{max-height:calc(100vh - 14rem);min-height:2.2rem;overflow-x:hidden;overflow-y:auto;transition:all .2s}.tags-page .tags-wrapper .tags::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.05)}.tags-page .tags-wrapper .tags::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.15)}.tags-page .tags-wrapper .tags:hover::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,.1)}.tags-page .tags-wrapper .tags:hover::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.25)}.tags-page .main-left .tags-wrapper{position:relative;top:0;padding:.9rem 1.5rem;margin-bottom:.9rem;max-height:15rem;border-radius:0;display:none}@media (max-width:719px){.tags-page .main-left .tags-wrapper{display:block}}.tags-page .main-left .tags-wrapper .tags{max-height:11.5rem}@media (max-width:719px){.theme-style-line .tags-page .main-left .tags-wrapper{margin-top:-.91rem;margin-bottom:-1px}}.archives-page .theme-vdoing-wrapper{max-width:860px;margin:0 auto;padding:1rem 2.5rem 2rem}.archives-page .theme-vdoing-wrapper:not(.footer){background:var(--mainBg);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);margin-bottom:1rem}@media (min-width:940px){.archives-page .theme-vdoing-wrapper:not(.footer){border-radius:2px}}@media (max-width:959px){.archives-page .theme-vdoing-wrapper{padding:1rem 2rem}}@media (max-width:419px){.archives-page .theme-vdoing-wrapper{padding:1rem 1.5rem}}.theme-style-line .archives-page .theme-vdoing-wrapper{box-shadow:0 0}.archives-page .theme-vdoing-wrapper{position:relative}@media (min-width:940px){.archives-page .theme-vdoing-wrapper{margin-top:1.5rem!important}}.archives-page .theme-vdoing-wrapper .count{text-align:right;margin-top:-2.5rem;font-size:.85rem;opacity:.8}.archives-page .theme-vdoing-wrapper li,.archives-page .theme-vdoing-wrapper ul{margin:0;padding:0}.archives-page .theme-vdoing-wrapper ul{margin-top:2rem}.archives-page .theme-vdoing-wrapper li{list-style:none}.archives-page .theme-vdoing-wrapper li.year{position:sticky;top:3.6rem;background:var(--mainBg);z-index:1}.archives-page .theme-vdoing-wrapper li.year:not(:first-child){margin-top:3.5rem}.archives-page .theme-vdoing-wrapper li h2{margin-bottom:.8rem;font-weight:400;padding:.5rem 0}.archives-page .theme-vdoing-wrapper li h2 span{font-size:.85rem;font-weight:300;float:right;margin-top:1rem}.archives-page .theme-vdoing-wrapper li a{display:block;color:var(--textColor);transition:padding .3s;padding:.5rem 2rem;line-height:1.2rem}.archives-page .theme-vdoing-wrapper li a:hover{padding-left:2.5rem;color:#4274f4;background:#f9f9f9}@media (max-width:940px){.archives-page .theme-vdoing-wrapper li a{padding:.5rem 1rem;font-weight:400}.archives-page .theme-vdoing-wrapper li a:hover{padding-left:1.5rem}}.archives-page .theme-vdoing-wrapper li a span.date{opacity:.6;font-size:.85rem;font-weight:400;margin-right:.3rem}.archives-page .theme-vdoing-wrapper li a .title-tag{border:1px solid #ff5722;color:#ff5722;font-size:.8rem;padding:0 .35rem;border-radius:.2rem;margin-left:0;transform:translateY(-.05rem);display:inline-block}.archives-page .theme-vdoing-wrapper .loadmore{text-align:center;margin-top:1rem;opacity:.5}.theme-mode-dark .archives-page .theme-vdoing-wrapper li a:hover,.theme-mode-read .archives-page .theme-vdoing-wrapper li a:hover{background:var(--customBlockBg)}.hide-navbar .archives-page .theme-vdoing-wrapper li.year{top:0}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:1.01em;line-height:1.4;font-weight:700;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.98em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:var(--textColor);transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#4274f4;border-left-color:#4274f4}.sidebar-heading.clickable:hover{color:#4274f4}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}.sidebar .sidebar-sub-headers .level4{padding-left:.2rem}.sidebar .sidebar-sub-headers .level5{padding-left:.4rem}.sidebar .sidebar-sub-headers .level6{padding-left:.6rem}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:var(--textColor);border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#4274f4}a.sidebar-link.active{font-weight:600;color:#4274f4;border-left-color:#4274f4}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid var(--borderColor);padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}.sidebar .blogger{display:none;border-bottom:1px solid var(--borderColor)}.sidebar .blogger img{width:60px;height:60px;border-radius:5px;margin:.75rem 1rem}.sidebar .blogger .blogger-info{flex:1;padding:0 .3rem .3rem 0}.sidebar .blogger .blogger-info h3{margin:.95rem 0 .6rem;font-size:1.1rem}.sidebar .blogger .blogger-info .icons .iconfont{font-size:1.2rem;padding-right:.6rem;color:#777}.sidebar .sidebar-slot{margin-bottom:-.5rem;font-size:.85rem}.sidebar .sidebar-slot.sidebar-slot-top{padding:1.5rem 1.5rem 0}.sidebar .sidebar-slot.sidebar-slot-bottom{padding:0 1.5rem 1.5rem}@media (max-width:719px){.sidebar .blogger{display:flex}.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.yellowBorder{border-radius:5px;box-shadow:0 0 15px #ffe089!important}.buttons{position:fixed;right:2rem;bottom:2.5rem;z-index:11}@media (max-width:959px){.buttons{right:1rem;bottom:1.5rem}}.buttons .button{width:2.2rem;height:2.2rem;line-height:2.2rem;border-radius:50%;box-shadow:0 2px 6px rgba(0,0,0,.15);margin-top:.9rem;text-align:center;cursor:pointer;transition:all .5s;background:var(--blurBg)}.buttons .button.hover{background:#4274f4;box-shadow:0 0 15px #4274f4}.buttons .button.hover:before{color:#fff}@media (any-hover:hover){.buttons .button:hover{background:#4274f4;box-shadow:0 0 15px #4274f4}.buttons .button:hover:before{color:#fff}}.buttons .button .select-box{margin:0;padding:.8rem 0;position:absolute;bottom:0;right:1.5rem;background:var(--mainBg);border:1px solid var(--borderColor);width:120px;border-radius:6px;box-shadow:0 0 15px hsla(0,0%,100%,.2)}.buttons .button .select-box li{list-style:none;line-height:2rem;font-size:.95rem}.buttons .button .select-box li:hover{color:#4274f4}.buttons .button .select-box li.active{background-color:hsla(0,0%,58.8%,.2);color:#4274f4}.mode-enter-active,.mode-leave-active{transition:all .3s}.mode-enter,.mode-leave-to{opacity:0;transform:scale(.8)}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-to{opacity:0}.footer{padding:5rem 1.5rem 2.5rem;text-align:center;color:#666;box-sizing:border-box;font-size:.85rem;transition:all .2s ease}.footer>span{line-height:1.5rem}.footer .icons{margin-bottom:12px}.footer .icons .iconfont{padding:0 10px;font-size:1.3rem}.footer a{color:inherit}.footer a:hover{color:#4274f4}@media (min-width:720px){.sidebar-open .footer{width:auto;padding-left:19.5rem}}@media (min-width:1520px){.have-rightmenu .footer{padding-right:231.5px}}.no-sidebar .footer{width:auto;padding-left:1.5rem}.body-bg{position:fixed;left:0;top:0;z-index:-999999;height:100vh;width:100vw;transition:background .5s}.theme-mode-light{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-]::-moz-selection,.theme-mode-light code[class*=language-] ::-moz-selection,.theme-mode-light pre[class*=language-]::-moz-selection,.theme-mode-light pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-]::selection,.theme-mode-light code[class*=language-] ::selection,.theme-mode-light pre[class*=language-]::selection,.theme-mode-light pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-],.theme-mode-light pre[class*=language-]{background:#f5f2f0}.theme-mode-light .token.cdata,.theme-mode-light .token.comment,.theme-mode-light .token.doctype,.theme-mode-light .token.prolog{color:#708090}.theme-mode-light .token.punctuation{color:#999}.theme-mode-light .namespace{opacity:.7}.theme-mode-light .token.boolean,.theme-mode-light .token.constant,.theme-mode-light .token.deleted,.theme-mode-light .token.number,.theme-mode-light .token.property,.theme-mode-light .token.symbol,.theme-mode-light .token.tag{color:#905}.theme-mode-light .token.attr-name,.theme-mode-light .token.builtin,.theme-mode-light .token.char,.theme-mode-light .token.inserted,.theme-mode-light .token.selector,.theme-mode-light .token.string{color:#690}.theme-mode-light .language-css .token.string,.theme-mode-light .style .token.string,.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule,.theme-mode-light .token.attr-value,.theme-mode-light .token.keyword{color:#07a}.theme-mode-light .token.class-name,.theme-mode-light .token.function{color:#dd4a68}.theme-mode-light .token.important,.theme-mode-light .token.regex,.theme-mode-light .token.variable{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted,.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light{--bodyBg:#fff}.theme-style-line.theme-mode-dark{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read{--bodyBg:#f5f5d5}.theme-mode-light{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-],.theme-mode-light pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-],.theme-mode-light pre[class*=language-]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment,.theme-mode-light .token.cdata,.theme-mode-light .token.comment,.theme-mode-light .token.doctype,.theme-mode-light .token.prolog{color:#999}.theme-mode-light .token.punctuation{color:#ccc}.theme-mode-light .token.attr-name,.theme-mode-light .token.deleted,.theme-mode-light .token.namespace,.theme-mode-light .token.tag{color:#e2777a}.theme-mode-light .token.function-name{color:#6196cc}.theme-mode-light .token.boolean,.theme-mode-light .token.function,.theme-mode-light .token.number{color:#f08d49}.theme-mode-light .token.class-name,.theme-mode-light .token.constant,.theme-mode-light .token.property,.theme-mode-light .token.symbol{color:#f8c555}.theme-mode-light .token.atrule,.theme-mode-light .token.builtin,.theme-mode-light .token.important,.theme-mode-light .token.keyword,.theme-mode-light .token.selector{color:#cc99cd}.theme-mode-light .token.attr-value,.theme-mode-light .token.char,.theme-mode-light .token.regex,.theme-mode-light .token.string,.theme-mode-light .token.variable{color:#7ec699}.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{color:#67cdcc}.theme-mode-light .language-css .token.string,.theme-mode-light .style .token.string,.theme-mode-light .token.entity,.theme-mode-light .token.operator,.theme-mode-light .token.url{background:none}.theme-mode-light .token.bold,.theme-mode-light .token.important{font-weight:700}.theme-mode-light .token.italic{font-style:italic}.theme-mode-light .token.entity{cursor:help}.theme-mode-light .token.inserted{color:green}.theme-mode-dark{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-],.theme-mode-dark pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-],.theme-mode-dark pre[class*=language-]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment,.theme-mode-dark .token.cdata,.theme-mode-dark .token.comment,.theme-mode-dark .token.doctype,.theme-mode-dark .token.prolog{color:#999}.theme-mode-dark .token.punctuation{color:#ccc}.theme-mode-dark .token.attr-name,.theme-mode-dark .token.deleted,.theme-mode-dark .token.namespace,.theme-mode-dark .token.tag{color:#e2777a}.theme-mode-dark .token.function-name{color:#6196cc}.theme-mode-dark .token.boolean,.theme-mode-dark .token.function,.theme-mode-dark .token.number{color:#f08d49}.theme-mode-dark .token.class-name,.theme-mode-dark .token.constant,.theme-mode-dark .token.property,.theme-mode-dark .token.symbol{color:#f8c555}.theme-mode-dark .token.atrule,.theme-mode-dark .token.builtin,.theme-mode-dark .token.important,.theme-mode-dark .token.keyword,.theme-mode-dark .token.selector{color:#cc99cd}.theme-mode-dark .token.attr-value,.theme-mode-dark .token.char,.theme-mode-dark .token.regex,.theme-mode-dark .token.string,.theme-mode-dark .token.variable{color:#7ec699}.theme-mode-dark .token.entity,.theme-mode-dark .token.operator,.theme-mode-dark .token.url{color:#67cdcc}.theme-mode-dark .language-css .token.string,.theme-mode-dark .style .token.string,.theme-mode-dark .token.entity,.theme-mode-dark .token.operator,.theme-mode-dark .token.url{background:none}.theme-mode-dark .token.bold,.theme-mode-dark .token.important{font-weight:700}.theme-mode-dark .token.italic{font-style:italic}.theme-mode-dark .token.entity{cursor:help}.theme-mode-dark .token.inserted{color:green}.theme-mode-read{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-],.theme-mode-read pre[class*=language-]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-],.theme-mode-read pre[class*=language-]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment,.theme-mode-read .token.cdata,.theme-mode-read .token.comment,.theme-mode-read .token.doctype,.theme-mode-read .token.prolog{color:#999}.theme-mode-read .token.punctuation{color:#ccc}.theme-mode-read .token.attr-name,.theme-mode-read .token.deleted,.theme-mode-read .token.namespace,.theme-mode-read .token.tag{color:#e2777a}.theme-mode-read .token.function-name{color:#6196cc}.theme-mode-read .token.boolean,.theme-mode-read .token.function,.theme-mode-read .token.number{color:#f08d49}.theme-mode-read .token.class-name,.theme-mode-read .token.constant,.theme-mode-read .token.property,.theme-mode-read .token.symbol{color:#f8c555}.theme-mode-read .token.atrule,.theme-mode-read .token.builtin,.theme-mode-read .token.important,.theme-mode-read .token.keyword,.theme-mode-read .token.selector{color:#cc99cd}.theme-mode-read .token.attr-value,.theme-mode-read .token.char,.theme-mode-read .token.regex,.theme-mode-read .token.string,.theme-mode-read .token.variable{color:#7ec699}.theme-mode-read .token.entity,.theme-mode-read .token.operator,.theme-mode-read .token.url{color:#67cdcc}.theme-mode-read .language-css .token.string,.theme-mode-read .style .token.string,.theme-mode-read .token.entity,.theme-mode-read .token.operator,.theme-mode-read .token.url{background:none}.theme-mode-read .token.bold,.theme-mode-read .token.important{font-weight:700}.theme-mode-read .token.italic{font-style:italic}.theme-mode-read .token.entity{cursor:help}.theme-mode-read .token.inserted{color:green}.custom-html-window{position:fixed;bottom:0;display:flex;overflow:hidden;font-weight:350}@media (max-width:960px){.custom-html-window{display:none}}.custom-html-window .custom-wrapper{position:relative;max-width:200px;max-height:400px}.custom-html-window .custom-wrapper .close-but{cursor:pointer;position:absolute;right:0;top:0;font-size:1.5rem;line-height:1.5rem;width:1.5rem;height:1.5rem;opacity:0;transition:all .2s}.custom-html-window .custom-wrapper .close-but:hover{opacity:.9}.custom-html-window .custom-wrapper:hover .close-but{opacity:.7}.custom-html-window.custom-html-window-lb{left:0;z-index:99}.custom-html-window.custom-html-window-lb>*{align-self:flex-end}.custom-html-window.custom-html-window-rb{right:80px;z-index:10;justify-content:flex-end}.custom-html-window.custom-html-window-rb>*{align-self:flex-end}.become-sponsor{padding:8px 20px;display:inline-block;color:#11a8cd;border-radius:30px;box-sizing:border-box;border:1px solid #11a8cd}.theme-mode-light[data-v-d5affa18]{--sidebarBg:hsla(0,0%,100%,0.8);--blurBg:hsla(0,0%,100%,0.9);--customBlockBg:#f1f1f1;--textColor:#00323c;--textLightenColor:#0085ad;--borderColor:rgba(0,0,0,0.12);--codeBg:#f6f6f6;--codeColor:#525252}.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{color:#000;text-shadow:0 1px #fff}.theme-mode-light code[class*=language-][data-v-d5affa18]::-moz-selection,.theme-mode-light code[class*=language-][data-v-d5affa18] ::-moz-selection,.theme-mode-light pre[class*=language-][data-v-d5affa18]::-moz-selection,.theme-mode-light pre[class*=language-][data-v-d5affa18] ::-moz-selection{text-shadow:none;background:#b3d4fc}.theme-mode-light code[class*=language-][data-v-d5affa18]::selection,.theme-mode-light code[class*=language-][data-v-d5affa18] ::selection,.theme-mode-light pre[class*=language-][data-v-d5affa18]::selection,.theme-mode-light pre[class*=language-][data-v-d5affa18] ::selection{text-shadow:none;background:#b3d4fc}@media print{.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{text-shadow:none}}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{background:#f5f2f0}.theme-mode-light .token.cdata[data-v-d5affa18],.theme-mode-light .token.comment[data-v-d5affa18],.theme-mode-light .token.doctype[data-v-d5affa18],.theme-mode-light .token.prolog[data-v-d5affa18]{color:#708090}.theme-mode-light .token.punctuation[data-v-d5affa18]{color:#999}.theme-mode-light .namespace[data-v-d5affa18]{opacity:.7}.theme-mode-light .token.boolean[data-v-d5affa18],.theme-mode-light .token.constant[data-v-d5affa18],.theme-mode-light .token.deleted[data-v-d5affa18],.theme-mode-light .token.number[data-v-d5affa18],.theme-mode-light .token.property[data-v-d5affa18],.theme-mode-light .token.symbol[data-v-d5affa18],.theme-mode-light .token.tag[data-v-d5affa18]{color:#905}.theme-mode-light .token.attr-name[data-v-d5affa18],.theme-mode-light .token.builtin[data-v-d5affa18],.theme-mode-light .token.char[data-v-d5affa18],.theme-mode-light .token.inserted[data-v-d5affa18],.theme-mode-light .token.selector[data-v-d5affa18],.theme-mode-light .token.string[data-v-d5affa18]{color:#690}.theme-mode-light .language-css .token.string[data-v-d5affa18],.theme-mode-light .style .token.string[data-v-d5affa18],.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.theme-mode-light .token.atrule[data-v-d5affa18],.theme-mode-light .token.attr-value[data-v-d5affa18],.theme-mode-light .token.keyword[data-v-d5affa18]{color:#07a}.theme-mode-light .token.class-name[data-v-d5affa18],.theme-mode-light .token.function[data-v-d5affa18]{color:#dd4a68}.theme-mode-light .token.important[data-v-d5affa18],.theme-mode-light .token.regex[data-v-d5affa18],.theme-mode-light .token.variable[data-v-d5affa18]{color:#e90}.theme-mode-light div[class*=language-] .highlight-lines .highlighted[data-v-d5affa18],.theme-mode-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted[data-v-d5affa18]:before{background-color:hsla(0,0%,78.4%,.4)}.theme-mode-dark[data-v-d5affa18]{--bodyBg:#27272b;--mainBg:#1e1e22;--sidebarBg:rgba(30,30,34,0.8);--blurBg:rgba(30,30,34,0.8);--customBlockBg:#27272b;--textColor:#9b9baa;--textLightenColor:#0085ad;--borderColor:#30363d;--codeBg:#252526}.theme-mode-read[data-v-d5affa18]{--bodyBg:#ececcc;--customBlockBg:#ececcc;--textColor:#704214;--textLightenColor:#963}.theme-style-line.theme-mode-light[data-v-d5affa18]{--bodyBg:#fff}.theme-style-line.theme-mode-dark[data-v-d5affa18]{--bodyBg:#1e1e22}.theme-style-line.theme-mode-read[data-v-d5affa18]{--bodyBg:#f5f5d5}.theme-mode-light[data-v-d5affa18]{--bodyBg:#f4f4f4;--mainBg:#fff;--sidebarBg:#fff;--blurBg:#fff;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-light code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-light pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-light pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-light :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-light .token.block-comment[data-v-d5affa18],.theme-mode-light .token.cdata[data-v-d5affa18],.theme-mode-light .token.comment[data-v-d5affa18],.theme-mode-light .token.doctype[data-v-d5affa18],.theme-mode-light .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-light .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-light .token.attr-name[data-v-d5affa18],.theme-mode-light .token.deleted[data-v-d5affa18],.theme-mode-light .token.namespace[data-v-d5affa18],.theme-mode-light .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-light .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-light .token.boolean[data-v-d5affa18],.theme-mode-light .token.function[data-v-d5affa18],.theme-mode-light .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-light .token.class-name[data-v-d5affa18],.theme-mode-light .token.constant[data-v-d5affa18],.theme-mode-light .token.property[data-v-d5affa18],.theme-mode-light .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-light .token.atrule[data-v-d5affa18],.theme-mode-light .token.builtin[data-v-d5affa18],.theme-mode-light .token.important[data-v-d5affa18],.theme-mode-light .token.keyword[data-v-d5affa18],.theme-mode-light .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-light .token.attr-value[data-v-d5affa18],.theme-mode-light .token.char[data-v-d5affa18],.theme-mode-light .token.regex[data-v-d5affa18],.theme-mode-light .token.string[data-v-d5affa18],.theme-mode-light .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-light .language-css .token.string[data-v-d5affa18],.theme-mode-light .style .token.string[data-v-d5affa18],.theme-mode-light .token.entity[data-v-d5affa18],.theme-mode-light .token.operator[data-v-d5affa18],.theme-mode-light .token.url[data-v-d5affa18]{background:none}.theme-mode-light .token.bold[data-v-d5affa18],.theme-mode-light .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-light .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-light .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-light .token.inserted[data-v-d5affa18]{color:green}.theme-mode-dark[data-v-d5affa18]{--bodyBg:#22272e;--mainBg:#22272e;--sidebarBg:#22272e;--blurBg:#22272e;--textColor:#adbac7;--textLightenColor:#4274f4;--borderColor:#2c2c3a;--codeBg:#282c34;--codeColor:#fff}.theme-mode-dark code[class*=language-][data-v-d5affa18],.theme-mode-dark pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-dark pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-dark :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-dark pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-dark :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-dark .token.block-comment[data-v-d5affa18],.theme-mode-dark .token.cdata[data-v-d5affa18],.theme-mode-dark .token.comment[data-v-d5affa18],.theme-mode-dark .token.doctype[data-v-d5affa18],.theme-mode-dark .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-dark .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-dark .token.attr-name[data-v-d5affa18],.theme-mode-dark .token.deleted[data-v-d5affa18],.theme-mode-dark .token.namespace[data-v-d5affa18],.theme-mode-dark .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-dark .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-dark .token.boolean[data-v-d5affa18],.theme-mode-dark .token.function[data-v-d5affa18],.theme-mode-dark .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-dark .token.class-name[data-v-d5affa18],.theme-mode-dark .token.constant[data-v-d5affa18],.theme-mode-dark .token.property[data-v-d5affa18],.theme-mode-dark .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-dark .token.atrule[data-v-d5affa18],.theme-mode-dark .token.builtin[data-v-d5affa18],.theme-mode-dark .token.important[data-v-d5affa18],.theme-mode-dark .token.keyword[data-v-d5affa18],.theme-mode-dark .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-dark .token.attr-value[data-v-d5affa18],.theme-mode-dark .token.char[data-v-d5affa18],.theme-mode-dark .token.regex[data-v-d5affa18],.theme-mode-dark .token.string[data-v-d5affa18],.theme-mode-dark .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-dark .token.entity[data-v-d5affa18],.theme-mode-dark .token.operator[data-v-d5affa18],.theme-mode-dark .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-dark .language-css .token.string[data-v-d5affa18],.theme-mode-dark .style .token.string[data-v-d5affa18],.theme-mode-dark .token.entity[data-v-d5affa18],.theme-mode-dark .token.operator[data-v-d5affa18],.theme-mode-dark .token.url[data-v-d5affa18]{background:none}.theme-mode-dark .token.bold[data-v-d5affa18],.theme-mode-dark .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-dark .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-dark .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-dark .token.inserted[data-v-d5affa18]{color:green}.theme-mode-read[data-v-d5affa18]{--bodyBg:#f5f5d5;--mainBg:#f5f5d5;--sidebarBg:rgba(245,245,213,0.8);--blurBg:rgba(245,245,213,0.9);--textColor:#004050;--textLightenColor:#4274f4;--borderColor:rgba(0,0,0,0.15);--codeBg:#282c34;--codeColor:#fff}.theme-mode-read code[class*=language-][data-v-d5affa18],.theme-mode-read pre[class*=language-][data-v-d5affa18]{color:#ccc;background:none;text-shadow:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.theme-mode-read pre[class*=language-][data-v-d5affa18]{padding:1em;margin:.5em 0;overflow:auto}.theme-mode-read :not(pre)>code[class*=language-][data-v-d5affa18],.theme-mode-read pre[class*=language-][data-v-d5affa18]{background:#2d2d2d}.theme-mode-read :not(pre)>code[class*=language-][data-v-d5affa18]{padding:.1em;border-radius:.3em;white-space:normal}.theme-mode-read .token.block-comment[data-v-d5affa18],.theme-mode-read .token.cdata[data-v-d5affa18],.theme-mode-read .token.comment[data-v-d5affa18],.theme-mode-read .token.doctype[data-v-d5affa18],.theme-mode-read .token.prolog[data-v-d5affa18]{color:#999}.theme-mode-read .token.punctuation[data-v-d5affa18]{color:#ccc}.theme-mode-read .token.attr-name[data-v-d5affa18],.theme-mode-read .token.deleted[data-v-d5affa18],.theme-mode-read .token.namespace[data-v-d5affa18],.theme-mode-read .token.tag[data-v-d5affa18]{color:#e2777a}.theme-mode-read .token.function-name[data-v-d5affa18]{color:#6196cc}.theme-mode-read .token.boolean[data-v-d5affa18],.theme-mode-read .token.function[data-v-d5affa18],.theme-mode-read .token.number[data-v-d5affa18]{color:#f08d49}.theme-mode-read .token.class-name[data-v-d5affa18],.theme-mode-read .token.constant[data-v-d5affa18],.theme-mode-read .token.property[data-v-d5affa18],.theme-mode-read .token.symbol[data-v-d5affa18]{color:#f8c555}.theme-mode-read .token.atrule[data-v-d5affa18],.theme-mode-read .token.builtin[data-v-d5affa18],.theme-mode-read .token.important[data-v-d5affa18],.theme-mode-read .token.keyword[data-v-d5affa18],.theme-mode-read .token.selector[data-v-d5affa18]{color:#cc99cd}.theme-mode-read .token.attr-value[data-v-d5affa18],.theme-mode-read .token.char[data-v-d5affa18],.theme-mode-read .token.regex[data-v-d5affa18],.theme-mode-read .token.string[data-v-d5affa18],.theme-mode-read .token.variable[data-v-d5affa18]{color:#7ec699}.theme-mode-read .token.entity[data-v-d5affa18],.theme-mode-read .token.operator[data-v-d5affa18],.theme-mode-read .token.url[data-v-d5affa18]{color:#67cdcc}.theme-mode-read .language-css .token.string[data-v-d5affa18],.theme-mode-read .style .token.string[data-v-d5affa18],.theme-mode-read .token.entity[data-v-d5affa18],.theme-mode-read .token.operator[data-v-d5affa18],.theme-mode-read .token.url[data-v-d5affa18]{background:none}.theme-mode-read .token.bold[data-v-d5affa18],.theme-mode-read .token.important[data-v-d5affa18]{font-weight:700}.theme-mode-read .token.italic[data-v-d5affa18]{font-style:italic}.theme-mode-read .token.entity[data-v-d5affa18]{cursor:help}.theme-mode-read .token.inserted[data-v-d5affa18]{color:green}.badge[data-v-d5affa18]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-d5affa18],.badge.tip[data-v-d5affa18],.badge[data-v-d5affa18]{background-color:#42b983}.badge.error[data-v-d5affa18]{background-color:#da5961}.badge.warn[data-v-d5affa18],.badge.warning[data-v-d5affa18],.badge.yellow[data-v-d5affa18]{background-color:#e7c000}.badge+.badge[data-v-d5affa18]{margin-left:5px} \ No newline at end of file diff --git a/neutrino-proxy/assets/img/a1.578566de.png b/neutrino-proxy/assets/img/a1.578566de.png new file mode 100644 index 00000000..c4fbb63c Binary files /dev/null and b/neutrino-proxy/assets/img/a1.578566de.png differ diff --git a/neutrino-proxy/assets/img/a2.58603eb1.png b/neutrino-proxy/assets/img/a2.58603eb1.png new file mode 100644 index 00000000..cb9e4469 Binary files /dev/null and b/neutrino-proxy/assets/img/a2.58603eb1.png differ diff --git a/neutrino-proxy/assets/img/search.237d6f6a.svg b/neutrino-proxy/assets/img/search.237d6f6a.svg new file mode 100644 index 00000000..18ed22ab --- /dev/null +++ b/neutrino-proxy/assets/img/search.237d6f6a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/neutrino-proxy/assets/js/10.aefeccb2.js b/neutrino-proxy/assets/js/10.aefeccb2.js new file mode 100644 index 00000000..633720f2 --- /dev/null +++ b/neutrino-proxy/assets/js/10.aefeccb2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{375:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("1、目前的原生部署包支持mac、linux、windows三个平台")]),t._v(" "),s("p",[t._v("2、这三个平台的部署包均由作者分别测试通过")]),t._v(" "),s("p",[t._v("3、尽管如此,仍然可能存在有的机器不支持的情况,可自行拉取仓库源码编译出目标平台可执行文件、或换成其它部署方式")]),t._v(" "),s("p",[t._v("4、若linux/mac下提示文件没有执行权限,可执行"),s("code",[t._v("chmod +x {文件路径}")]),t._v("解决")]),t._v(" "),s("p",[t._v("5、若mac下运行提示移到废纸篓,可执行"),s("code",[t._v("sudo xattr -rd com.apple.quarantine {文件路径}")]),t._v("解决")])]),t._v(" "),s("h2",{attrs:{id:"_1、安装包下载"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1、安装包下载"}},[t._v("#")]),t._v(" 1、安装包下载")]),t._v(" "),s("ul",[s("li",[t._v("打开"),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发行版页面"),s("OutboundLink")],1),t._v(",下载所需的最新的release包:")]),t._v(" "),s("li",[t._v("比如服务器为linux则可下载"),s("code",[t._v("neutrino-proxy-server-linux-2.0.2-native.zip")]),t._v("文件,客户端为windows则可下载"),s("code",[t._v("neutrino-proxy-client-windows-2.0.2-native.zip")])])]),t._v(" "),s("h2",{attrs:{id:"_2、部署服务端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务端"}},[t._v("#")]),t._v(" 2、部署服务端")]),t._v(" "),s("ul",[s("li",[t._v("将服务端安装包上传至服务器,并解压")]),t._v(" "),s("li",[t._v("服务端默认使用h2数据库,若需要改为mysql,则可修改安装包"),s("code",[t._v("app.yml")]),t._v("内的数据库配置,如下:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mysql\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("mysql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxxx"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("3306/neutrino"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("proxy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("?")]),t._v("useUnicode=true"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("driver-class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" com.mysql.jdbc.Driver\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库帐号")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n")])])]),s("ul",[s("li",[t._v("然后直接启动服务端可执行程序即可")])]),t._v(" "),s("h2",{attrs:{id:"_3、部署客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3、部署客户端"}},[t._v("#")]),t._v(" 3、部署客户端")]),t._v(" "),s("ul",[s("li",[t._v("本地解压客户端安装包")]),t._v(" "),s("li",[t._v("修改"),s("code",[t._v("app.yml")]),t._v("文件中的server-ip为服务器公网ip,并配置license-key,以下是相关的部分配置:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用ssl")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n")])])]),s("ul",[s("li",[t._v("然后直接启动客户端可执行程序即可")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/11.83da976e.js b/neutrino-proxy/assets/js/11.83da976e.js new file mode 100644 index 00000000..7adb323b --- /dev/null +++ b/neutrino-proxy/assets/js/11.83da976e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{376:function(s,t,a){"use strict";a.r(t);var e=a(14),r=Object(e.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h2",{attrs:{id:"_1、-部署服务端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、-部署服务端"}},[s._v("#")]),s._v(" 1、 部署服务端")]),s._v(" "),t("h3",{attrs:{id:"使用默认h2数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认h2数据库一键部署"}},[s._v("#")]),s._v(" 使用默认h2数据库一键部署")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-server-h2\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])]),t("h3",{attrs:{id:"使用默认mysql数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认mysql数据库一键部署"}},[s._v("#")]),s._v(" 使用默认mysql数据库一键部署")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-server-mysql\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])]),t("h2",{attrs:{id:"_2、部署客户端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署客户端"}},[s._v("#")]),s._v(" 2、部署客户端")]),s._v(" "),t("ul",[t("li",[s._v("注意自行修改配置文件:config/app.yml")])]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/dromara/neutrino-proxy.git\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" neutrino-proxy/scripts/docker-compose/neutrino-proxy-client\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker-compose")]),s._v(" up "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-d")]),s._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/12.28575ea2.js b/neutrino-proxy/assets/js/12.28575ea2.js new file mode 100644 index 00000000..bb4791b4 --- /dev/null +++ b/neutrino-proxy/assets/js/12.28575ea2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{377:function(e,i,s){"use strict";s.r(i);var v=s(14),_=Object(v.a)({},(function(){var e=this,i=e._self._c;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"首页"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#首页"}},[e._v("#")]),e._v(" 首页")]),e._v(" "),i("ul",[i("li",[e._v("License统计:统计License相关数量指标")]),e._v(" "),i("li",[e._v("端口映射统计:统计端口映射相关数量指标")]),e._v(" "),i("li",[e._v("今日流量:统计当天的服务端上行/下行流量数据")]),e._v(" "),i("li",[e._v("流量汇总:统计所有(包含当天)的服务端上行/下行流量数据")]),e._v(" "),i("li",[e._v("流量监控:按天统计最近15天(可能会动态调整)每天的上行流量、下行流量、汇总流量")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/home.png")}})]),e._v(" "),i("h1",{attrs:{id:"代理配置"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#代理配置"}},[e._v("#")]),e._v(" 代理配置")]),e._v(" "),i("ul",[i("li",[e._v("License管理:License是客户端连接服务端的唯一合法凭证。一个License同时只能被一个客户端使用,一个License可以维护多条端口映射")]),e._v(" "),i("li",[e._v("端口映射:服务端IP+端口 -> 客户端IP+端口的四元组映射(因目前服务端单节点只有一个公网IP,所以不体现出来),是内网穿透的基本单元。")]),e._v(" "),i("li",[e._v("限速:\n"),i("ul",[i("li",[e._v("默认所有代理没有限速")]),e._v(" "),i("li",[e._v("对License限速,将使得License下的所有端口映射都被限速")]),e._v(" "),i("li",[e._v("若License设置了限速,License下的某条映射也设置了限速,则对于该映射优先采用端口映射上的限速规则")])])]),e._v(" "),i("li",[e._v("域名管理:用于管理服务器主域名和证书,用于支持域名映射。一个主域名域名可以创建多个域名映射(配置不同的子域名)。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/license2.png")}}),e._v(" "),i("img",{attrs:{src:e.$withBase("/img/run-example/port-mapping2.png")}})]),e._v(" "),i("h1",{attrs:{id:"安全组"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#安全组"}},[e._v("#")]),e._v(" 安全组")]),e._v(" "),i("p",[e._v("一个端口映射可绑定一个安全组,通过安全组的默认放行类型 + 安全组下的安全规则 控制该端口映射的安全访问规则。")]),e._v(" "),i("ul",[i("li",[e._v("场景1: 内部服务,穿透出来自己使用,不希望被其他人访问。端口映射可关联一个默认放行类型为“拒绝”的安全组,安全组下新增安全规则,将本地的出口ip添加到允许放行规则中。")]),e._v(" "),i("li",[e._v("场景2:公网服务,穿透出来开放给大家使用,但是希望拒绝某些IP访问。端口映射可关联一个默认放行类型为“允许”的安全组,安全组下新增安全规则,将黑名单ip添加到拒绝放行规则中。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/security-group1.png")}}),e._v(" "),i("img",{attrs:{src:e.$withBase("/img/run-example/security-rule1.png")}})]),e._v(" "),i("h1",{attrs:{id:"系统管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#系统管理"}},[e._v("#")]),e._v(" 系统管理")]),e._v(" "),i("ul",[i("li",[e._v("用户管理:支持多用户,一个用户可持有多个License。由于项目目前主推个人版,所以暂是没有权限这一套,管理员之外的所有用户都属于游客。对于绝大多数操作,游客仅有只读权限。")]),e._v(" "),i("li",[e._v("端口池管理:用于统一管理服务器内网穿透端口,方便统一设置安全组。")]),e._v(" "),i("li",[e._v("端口池分组:对端口池的一个分组。\n"),i("ul",[i("li",[e._v("全局分组:该分组下的端口全局通用。")]),e._v(" "),i("li",[e._v("用户分组:该分组下的端口由分组绑定的用户独占。")]),e._v(" "),i("li",[e._v("License分组:该分组下的端口由分组绑定的License独占。")])])]),e._v(" "),i("li",[e._v("调度管理:维护服务端定时任务。方便开发、调试。正常使用时无需关心。")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/user-manager1.png")}})]),e._v(" "),i("h1",{attrs:{id:"报表管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#报表管理"}},[e._v("#")]),e._v(" 报表管理")]),e._v(" "),i("ul",[i("li",[e._v("用户流量报表:基于用户维度的流量统计")]),e._v(" "),i("li",[e._v("License流量报表:基于License的流量统计")]),e._v(" "),i("li",[e._v("用户流量月度明细:基于用户的流量月度统计")]),e._v(" "),i("li",[e._v("License流量月度明细:基于License的流量月度统计")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/user-flow1.png")}})]),e._v(" "),i("h1",{attrs:{id:"日志管理"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#日志管理"}},[e._v("#")]),e._v(" 日志管理")]),e._v(" "),i("ul",[i("li",[e._v("调度日志:服务端定时任务执行日志")]),e._v(" "),i("li",[e._v("登录日志:管理后端登录、退出登录的日志")]),e._v(" "),i("li",[e._v("客户端连接日志:客户端连接、断开的日志")])]),e._v(" "),i("p",[i("img",{attrs:{src:e.$withBase("/img/run-example/login-log1.png")}})])])}),[],!1,null,null,null);i.default=_.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/13.2bc54ade.js b/neutrino-proxy/assets/js/13.2bc54ade.js new file mode 100644 index 00000000..3ad7862f --- /dev/null +++ b/neutrino-proxy/assets/js/13.2bc54ade.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{378:function(t,v,_){"use strict";_.r(v);var s=_(14),a=Object(s.a)({},(function(){var t=this,v=t._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"端口池"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口池"}},[t._v("#")]),t._v(" 端口池")]),t._v(" "),v("blockquote",[v("p",[t._v("端口池用于统一、集中管理服务端代理对外开放的代理端口。")])]),t._v(" "),v("ul",[v("li",[t._v("1、这里不包含服务端启动本身所需要的一些特殊端口,如:WEB端口、对客户端开放的端口(9000、9002)、HTTP代理端口。")]),t._v(" "),v("li",[t._v("2、端口映射里所有的服务端端口,都包含在端口池内。方便了统一管理、安全组/防火墙设置。")])]),t._v(" "),v("h1",{attrs:{id:"端口池分组"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口池分组"}},[t._v("#")]),t._v(" 端口池分组")]),t._v(" "),v("blockquote",[v("p",[t._v("顾名思义,它是对端口池下的端口做了一个划分。")])]),t._v(" "),v("ul",[v("li",[t._v("1、允许同一个分组内的端口拥有特定的归属。比如:全局分组下的端口,进行代理时所有用户共享,这里极端情况下涉及到端口抢占问题。而用户分组下的端口,归属于某一个特定的用户。\nLicense分组下的端口,归属于某一个特定的License。")]),t._v(" "),v("li",[t._v("2、该划分,使得特定的用户、License能够独占一部分端口。为后续更多场景下代理,避免端口被占用提供了支持。")])]),t._v(" "),v("h1",{attrs:{id:"端口映射"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#端口映射"}},[t._v("#")]),t._v(" 端口映射")]),t._v(" "),v("blockquote",[v("p",[t._v("当前版本代理功能的基本单元。")])]),t._v(" "),v("ul",[v("li",[t._v("1、该映射由一个四元组唯一标识(代理服务端IP、代理服务端端口、被代理服务局域网IP、被代理服务端口)。")]),t._v(" "),v("li",[t._v("2、由于本项目为个人版,代理服务端仅支持一个节点,所以四元组中的服务端IP可以省略,不在端口映射管理中体现。")]),t._v(" "),v("li",[t._v("3、代理成功的情况下,通过访问代理服务端IP+端口,可以达到访问内网被代理服务IP+端口的同等效果")]),t._v(" "),v("li",[t._v("4、例如:本地启动一个socket服务,需要和异地的同事联调。可以通过中微子代理jetbrains客户端插件(后续会推出)将本地socket端口代理至公网。同事通过访问代理服务端公网IP+端口进行调试。")])]),t._v(" "),v("h1",{attrs:{id:"基础端口说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基础端口说明"}},[t._v("#")]),t._v(" 基础端口说明")]),t._v(" "),v("ul",[v("li",[t._v("WEB端口:服务端API、后台管理访问端口,默认为:8888")]),t._v(" "),v("li",[t._v("服务端等待客户端连接的端口,非SSL:默认9000,SSL端口:默认9002(若不需要SSL支持,可不配置SSL端口)")]),t._v(" "),v("li",[t._v("HTTP代理端口:默认80,用于域名映射,若无需域名映射,可以忽略。")])])])}),[],!1,null,null,null);v.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/14.239eae84.js b/neutrino-proxy/assets/js/14.239eae84.js new file mode 100644 index 00000000..0b50c1de --- /dev/null +++ b/neutrino-proxy/assets/js/14.239eae84.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{379:function(t,a,s){"use strict";s.r(a);var r=s(14),_=Object(r.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"什么是域名映射"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是域名映射"}},[t._v("#")]),t._v(" 什么是域名映射?")]),t._v(" "),a("p",[t._v("域名映射是将指定端口映射绑定到某一个子域名上,通过直接访问域名的方式,达到访问被代理服务的目的。\n支持维护多个主域名并为多个主域名配置不同的子域名实现域名映射。")]),t._v(" "),a("h1",{attrs:{id:"域名映射能解决什么问题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射能解决什么问题"}},[t._v("#")]),t._v(" 域名映射能解决什么问题?")]),t._v(" "),a("ul",[a("li",[t._v("1、当服务端端口需要经常变动的时候,可以通过固定域名的方式,使得开发调试能够长期稳定的进行,不用每次更改访问地址。")]),t._v(" "),a("li",[t._v("2、使用域名可以使用有意义的名称方便记忆")]),t._v(" "),a("li",[t._v("3、调试某些第三方回调时,回调地址不能填写IP+端口的形式,此时需要域名来完成")])]),t._v(" "),a("h1",{attrs:{id:"域名映射的大致流程"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射的大致流程"}},[t._v("#")]),t._v(" 域名映射的大致流程?")]),t._v(" "),a("blockquote",[a("p",[t._v("例如你有一个已备案的域名:asgc.fun,以下是使用域名映射的大致流程")])]),t._v(" "),a("h2",{attrs:{id:"情况1-代理服务端使用80端口"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#情况1-代理服务端使用80端口"}},[t._v("#")]),t._v(" 情况1:代理服务端使用80端口")]),t._v(" "),a("ul",[a("li",[t._v("1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP")]),t._v(" "),a("li",[t._v("2、服务端管理后台域名管理新建域名,如:asgc.fun")]),t._v(" "),a("li",[t._v("3、服务端管理后台新建端口映射,协议选择:HTTP(S),选择主域名并设置好子域名,如:test1.proxy")]),t._v(" "),a("li",[t._v("4、配置好客户端并启动,代理映射完成")]),t._v(" "),a("li",[t._v("5、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务")])]),t._v(" "),a("h2",{attrs:{id:"情况2-代理服务端不使用80端口-80端口被nginx占用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#情况2-代理服务端不使用80端口-80端口被nginx占用"}},[t._v("#")]),t._v(" 情况2:代理服务端不使用80端口,80端口被nginx占用")]),t._v(" "),a("blockquote",[a("p",[t._v("假设代理服务端使用82作为HTTP代理端口")])]),t._v(" "),a("ul",[a("li",[t._v("1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP")]),t._v(" "),a("li",[t._v("2、nginx 80端口下将 *.proxy.asgc.fun 请求转到82端口,并附带原有请求头(特别是"),a("code",[t._v("Host")]),t._v(")")]),t._v(" "),a("li",[t._v("3、服务端管理后台域名管理新建域名,如:asgc.fun")]),t._v(" "),a("li",[t._v("4、服务端管理后台新建端口映射,协议选择:HTTP(S),设置好子域名,如:test1.proxy")]),t._v(" "),a("li",[t._v("5、配置好客户端并启动,代理映射完成")]),t._v(" "),a("li",[t._v("6、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务")])]),t._v(" "),a("h1",{attrs:{id:"所有的代理映射都能绑定域名吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#所有的代理映射都能绑定域名吗"}},[t._v("#")]),t._v(" 所有的代理映射都能绑定域名吗?")]),t._v(" "),a("p",[t._v("不行的。之所以能实现域名绑定,原因是HTTP请求附带了Host请求头,包含了请求的域名信息,代理服务端能根据请求的域名做分发。而TCP协议本身并不包含域名,因此无法实现。\n所以,目前只有HTTP(涵盖HTTPS)协议能支持。")]),t._v(" "),a("h1",{attrs:{id:"域名映射支持https吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#域名映射支持https吗"}},[t._v("#")]),t._v(" 域名映射支持HTTPS吗?")]),t._v(" "),a("p",[t._v("支持的。在服务端管理后台-域名管理中新建域名并上传域名对应的服务器证书,可以选择强制HTTPS,这样会拦截所有HTTP请求,只支持通过HTTPS访问。\n如果上传后的证书仍不支持HTTPS访问,请确保上传证书有效并且和配置的主域名或完整域名映射匹配。")]),t._v(" "),a("h1",{attrs:{id:"上传服务器证书的文件有要求吗"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#上传服务器证书的文件有要求吗"}},[t._v("#")]),t._v(" 上传服务器证书的文件有要求吗?")]),t._v(" "),a("p",[t._v("有的。目前只支持通过jks文件上传服务器证书,jks文件中只包含服务器证书(如:.cer文件),并设置密码。")]),t._v(" "),a("h1",{attrs:{id:"代理服务端使用非80端口时-nginx配置示例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#代理服务端使用非80端口时-nginx配置示例"}},[t._v("#")]),t._v(" 代理服务端使用非80端口时,nginx配置示例")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('server {\n listen 80;\n # 此处配不配貌似不影响\n server_name localhost *.neutrino-proxy.asgc.fun;\n\n location / {\n if ($http_host ~* "(.*?).neutrino-proxy.asgc.fun") {\n # 转发到代理服务端HTTP代理端口\n proxy_pass http://localhost:8899; \n }\n\n tcp_nodelay on;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上\n\n root html;\n index index.html index.htm;\n }\n}\n')])])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/15.9c7084a5.js b/neutrino-proxy/assets/js/15.9c7084a5.js new file mode 100644 index 00000000..347a1c3f --- /dev/null +++ b/neutrino-proxy/assets/js/15.9c7084a5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{380:function(t,v,_){"use strict";_.r(v);var s=_(14),l=Object(s.a)({},(function(){var t=this,v=t._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h2",{attrs:{id:"基础说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基础说明"}},[t._v("#")]),t._v(" 基础说明")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("在中微子代理中,HTTP的定位是:为ip+端口的访问形式增加域名访问的支持。因此:")]),t._v(" "),v("ul",[v("li",[t._v("如果端口映射正确配置了域名,那么该映射同时支持IP+端口、域名2种访问形式。")]),t._v(" "),v("li",[t._v("如果端口映射未配置域名,那么只能以ip+端口的形式访问,此时等价于选择TCP协议。")])])]),t._v(" "),v("li",[v("p",[t._v("在中微子代理中,HTTPS作为HTTP的一种增强行为,不作为一个单独的协议。因此:")]),t._v(" "),v("ul",[v("li",[t._v("在端口映射中只需要选择HTTP即可")]),t._v(" "),v("li",[t._v("若端口映射未正确配置域名,那么同理,此时等价于选择TCP协议。")]),t._v(" "),v("li",[t._v("若端口映射配置了域名,但是未正确配置HTTPS端口、证书,那么此时可以通过域名访问,但不支持HTTPS")]),t._v(" "),v("li",[t._v("若端口映射配置了域名,且正确配置了HTTPS端口、证书,那么此时可以通过IP+端口、http域名、https域名3种形式访问")])])])]),t._v(" "),v("h2",{attrs:{id:"https配置流程"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#https配置流程"}},[t._v("#")]),t._v(" HTTPS配置流程")]),t._v(" "),v("ul",[v("li",[t._v("按照域名映射流程,完成域名的配置")]),t._v(" "),v("li",[t._v("在服务端管理后台上传对应域名的HTTPS证书信息(此处应该是通配符证书)")])]),t._v(" "),v("h2",{attrs:{id:"https端口问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#https端口问题"}},[t._v("#")]),t._v(" HTTPS端口问题")]),t._v(" "),v("ul",[v("li",[t._v("与HTTP类似,HTTPS也有一个默认端口:443,默认情况下需要占用服务端443端口")]),t._v(" "),v("li",[t._v("如果代理服务端不能独占443端口,此处可以指定任意端口,但需要在nginx中配置443端口的转发规则。此处与域名映射中代理服务端不使用80端口的情况类似")])])])}),[],!1,null,null,null);v.default=l.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/16.db6de795.js b/neutrino-proxy/assets/js/16.db6de795.js new file mode 100644 index 00000000..234c89f5 --- /dev/null +++ b/neutrino-proxy/assets/js/16.db6de795.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{381:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("2.0.2版本,服务端配置格式有所调整。从之前的版本升级的,需要注意")])]),t._v(" "),s("h1",{attrs:{id:"以下是最新的服务端配置格式-app-yml"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#以下是最新的服务端配置格式-app-yml"}},[t._v("#")]),t._v(" 以下是最新的服务端配置格式(app.yml)")]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端web端口,用于支持HTTP接口,管理后台页面访问")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("WEB_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("8888")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 日志级别")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("level")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("LOG_LEVEL"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("info"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道相关配置-用于维持服务端与客户端的通信")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道非SSL端口")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("OPEN_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL端口")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SSL_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL证书配置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("STORE_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-manager-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("MGR_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("JKS_PATH"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("TUNNEL_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tcp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# http代理端口,默认80")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("http-proxy-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HTTP_PROXY_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# https代理端口,默认443 (需要配置域名、证书)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("https-proxy-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HTTPS_PROXY_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("443")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启代理服务报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("udp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启代理服务报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库类型,目前支持sqlite、mysql、mariadb")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_TYPE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("h2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库连接URL")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_URL"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("h2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("./data/db;MODE=MySQL;AUTO_SERVER=TRUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库用户名")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_USER"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("DB_PASSWORD"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/17.5a8480e4.js b/neutrino-proxy/assets/js/17.5a8480e4.js new file mode 100644 index 00000000..676db1be --- /dev/null +++ b/neutrino-proxy/assets/js/17.5a8480e4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{382:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),s("p",[t._v("1.9.0版本,客户端配置格式有所调整。从之前的版本升级的,需要注意")])]),t._v(" "),s("h1",{attrs:{id:"以下是最新的客户端配置格式-app-yml"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#以下是最新的客户端配置格式-app-yml"}},[t._v("#")]),t._v(" 以下是最新的客户端配置格式(app.yml)")]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 日志级别")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("solon.logging.logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v('"root"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("level")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" info\n \n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 隧道SSL证书配置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("STORE_PASS"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("JKS_PATH"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_IP"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("localhost"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SERVER_PORT"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用SSL(注意:该配置必须和server-port对应上)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("SSL_ENABLE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 客户端连接唯一凭证")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("LICENSE_KEY"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("client-id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_ID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启心跳日志")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("heartbeat-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HEARTBEAT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 重连设置")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("reconnection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 重连间隔(秒)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("interval-seconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启无限重连(未开启时,客户端license不合法会自动停止应用,开启了则不会,请谨慎开启)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unlimited")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("client")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("udp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 线程池相关配置,用于技术调优,可忽略")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("boss-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("work-thread-count")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# udp傀儡端口范围")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("puppet-port-range")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 10000"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10500")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否开启隧道传输报文日志(日志级别为debug时开启才有效)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("transfer-log-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" $"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("CLIENT_LOG"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/18.9d247656.js b/neutrino-proxy/assets/js/18.9d247656.js new file mode 100644 index 00000000..086107be --- /dev/null +++ b/neutrino-proxy/assets/js/18.9d247656.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{383:function(e,_,l){"use strict";l.r(_);var v=l(14),a=Object(v.a)({},(function(){var e=this,_=e._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[_("h2",{attrs:{id:"_1-1-启动日志包含not-found-license-key-config相关字样"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_1-1-启动日志包含not-found-license-key-config相关字样"}},[e._v("#")]),e._v(" 1.1. 启动日志包含"),_("code",[e._v("not found license-key config")]),e._v("相关字样")]),e._v(" "),_("p",[e._v("出现这种情况,说明客户端没获取到配置的license,可按如下检查:")]),e._v(" "),_("ul",[_("li",[e._v("客户端是否有配置app.yml,app.yml中是否有配置"),_("code",[e._v("license-key")])]),e._v(" "),_("li",[e._v("客户端启动参数是否指定app.yml配置,若未指定客户端不会加载任何jar外部的配置文件")]),e._v(" "),_("li",[e._v("客户端启动参数指定的配置文件路径是否正确?如:"),_("code",[e._v("java -jar neutrino-proxy-client.jar config=app.yml")]),e._v(",代表"),_("code",[e._v("app.yml")]),e._v("文件与jar在同级别目录下,如果不在同级别目录,请使用绝对/相对路径指定")]),e._v(" "),_("li",[e._v("除此之外license还可以用以下方法直接在启动参数中指定:\n"),_("ul",[_("li",[_("code",[e._v("java -jar -DLICENSE_KEY=xxxx -DSERVER_IP=x.x.x.x -DSERVER_PORT=9000 -DSSL_ENABLE=false neutrino-proxy-client.jar")])]),e._v(" "),_("li",[_("code",[e._v("java -jar neutrino-proxy-client.jar serverIp=x.x.x.x serverPort=9000 sslEnable=false licenseKey=xxxx")])])])])]),e._v(" "),_("h2",{attrs:{id:"_1-2-配置文件确定都已经配置-且启动参数正确指定了-但是没有出现认证成功日志"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-配置文件确定都已经配置-且启动参数正确指定了-但是没有出现认证成功日志"}},[e._v("#")]),e._v(" 1.2. 配置文件确定都已经配置,且启动参数正确指定了,但是没有出现"),_("code",[e._v("认证成功日志")])]),e._v(" "),_("ul",[_("li",[e._v("确认客户端配置的"),_("code",[e._v("server-ip")]),e._v(",必须是服务端所在机器的ip,且保证客户端所在机器能正常ping通")]),e._v(" "),_("li",[e._v("确认客户端配置的"),_("code",[e._v("server-port")]),e._v("与"),_("code",[e._v("ssl-enable")]),e._v(",默认情况应配置为9000、false或9002、true,除非服务端app.yml有改动隧道对外端口")]),e._v(" "),_("li",[e._v("确认服务端对外的9000、9002端口是否已经放开")]),e._v(" "),_("li",[e._v("服务端如果采用docker部署,需要确保容器的9000、9002端口映射到宿主机")])])])}),[],!1,null,null,null);_.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/19.9da31ccd.js b/neutrino-proxy/assets/js/19.9da31ccd.js new file mode 100644 index 00000000..a84fe17e --- /dev/null +++ b/neutrino-proxy/assets/js/19.9da31ccd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{384:function(t,s,a){"use strict";a.r(s);var e=a(14),r=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"_2-1-https证书"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-1-https证书"}},[t._v("#")]),t._v(" 2.1. HTTPS证书")]),t._v(" "),s("p",[t._v("该证书用于服务端支持HTTPS,若需要在服务端"),s("code",[t._v("app.yml")]),t._v("中配置即可")]),t._v(" "),s("h2",{attrs:{id:"_2-2-隧道ssl证书"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-2-隧道ssl证书"}},[t._v("#")]),t._v(" 2.2. 隧道SSL证书")]),t._v(" "),s("p",[t._v("该证书用于对客户端-服务端之间的数据通信进行加密,因此客户端/服务端均需要配置该证书。可参考如下命令生成:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('keytool -genkey -alias test1 -keyalg RSA -keysize 1024 -validity 3650 -keypass 123456 -storepass 123456 -keystore "./test.jks"\n')])])])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/2.bcc017ba.js b/neutrino-proxy/assets/js/2.bcc017ba.js new file mode 100644 index 00000000..cdd1d946 --- /dev/null +++ b/neutrino-proxy/assets/js/2.bcc017ba.js @@ -0,0 +1,14 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{286:function(t,e,n){},287:function(t,e,n){},288:function(t,e,n){},289:function(t,e,n){},290:function(t,e,n){},291:function(t,e,n){},292:function(t,e,n){},293:function(t,e,n){},294:function(t,e,n){"use strict";var r=TypeError;t.exports=function(t,e){if(t + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var i="Expected a function",o="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a="[object Arguments]",u="[object Array]",l="[object Boolean]",c="[object Date]",h="[object Error]",f="[object Function]",p="[object GeneratorFunction]",g="[object Map]",d="[object Number]",v="[object Object]",m="[object RegExp]",y="[object Set]",_="[object String]",b="[object Symbol]",w="[object WeakMap]",k="[object ArrayBuffer]",x="[object DataView]",P="[object Float32Array]",C="[object Float64Array]",T="[object Int8Array]",S="[object Int16Array]",L="[object Int32Array]",A="[object Uint8Array]",B="[object Uint16Array]",M="[object Uint32Array]",O=/\b__p \+= '';/g,E=/\b(__p \+=) '' \+/g,I=/(__e\(.*?\)|\b__t\)) \+\n'';/g,D=/&(?:amp|lt|gt|quot|#39);/g,$=/[&<>"']/g,j=RegExp(D.source),Y=RegExp($.source),X=/<%-([\s\S]+?)%>/g,N=/<%([\s\S]+?)%>/g,R=/<%=([\s\S]+?)%>/g,z=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,U=/^\w*$/,H=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,F=/[\\^$.*+?()[\]{}|]/g,W=RegExp(F.source),q=/^\s+/,G=/\s/,K=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,J=/,? & /,Z=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,V=/[()=,{}\[\]\/\s]/,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,rt=/^[-+]0x[0-9a-f]+$/i,it=/^0b[01]+$/i,ot=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,at=/^(?:0|[1-9]\d*)$/,ut=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,ct=/['\n\r\u2028\u2029\\]/g,ht="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pt="[\\ud800-\\udfff]",gt="["+ft+"]",dt="["+ht+"]",vt="\\d+",mt="[\\u2700-\\u27bf]",yt="[a-z\\xdf-\\xf6\\xf8-\\xff]",_t="[^\\ud800-\\udfff"+ft+vt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",bt="\\ud83c[\\udffb-\\udfff]",wt="[^\\ud800-\\udfff]",kt="(?:\\ud83c[\\udde6-\\uddff]){2}",xt="[\\ud800-\\udbff][\\udc00-\\udfff]",Pt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ct="(?:"+yt+"|"+_t+")",Tt="(?:"+Pt+"|"+_t+")",St="(?:"+dt+"|"+bt+")"+"?",Lt="[\\ufe0e\\ufe0f]?"+St+("(?:\\u200d(?:"+[wt,kt,xt].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*"),At="(?:"+[mt,kt,xt].join("|")+")"+Lt,Bt="(?:"+[wt+dt+"?",dt,kt,xt,pt].join("|")+")",Mt=RegExp("['’]","g"),Ot=RegExp(dt,"g"),Et=RegExp(bt+"(?="+bt+")|"+Bt+Lt,"g"),It=RegExp([Pt+"?"+yt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[gt,Pt,"$"].join("|")+")",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[gt,Pt+Ct,"$"].join("|")+")",Pt+"?"+Ct+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Pt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",vt,At].join("|"),"g"),Dt=RegExp("[\\u200d\\ud800-\\udfff"+ht+"\\ufe0e\\ufe0f]"),$t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,jt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Yt=-1,Xt={};Xt[P]=Xt[C]=Xt[T]=Xt[S]=Xt[L]=Xt[A]=Xt["[object Uint8ClampedArray]"]=Xt[B]=Xt[M]=!0,Xt[a]=Xt[u]=Xt[k]=Xt[l]=Xt[x]=Xt[c]=Xt[h]=Xt[f]=Xt[g]=Xt[d]=Xt[v]=Xt[m]=Xt[y]=Xt[_]=Xt[w]=!1;var Nt={};Nt[a]=Nt[u]=Nt[k]=Nt[x]=Nt[l]=Nt[c]=Nt[P]=Nt[C]=Nt[T]=Nt[S]=Nt[L]=Nt[g]=Nt[d]=Nt[v]=Nt[m]=Nt[y]=Nt[_]=Nt[b]=Nt[A]=Nt["[object Uint8ClampedArray]"]=Nt[B]=Nt[M]=!0,Nt[h]=Nt[f]=Nt[w]=!1;var Rt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},zt=parseFloat,Ut=parseInt,Ht="object"==typeof global&&global&&global.Object===Object&&global,Ft="object"==typeof self&&self&&self.Object===Object&&self,Wt=Ht||Ft||Function("return this")(),qt=e&&!e.nodeType&&e,Gt=qt&&"object"==typeof t&&t&&!t.nodeType&&t,Kt=Gt&&Gt.exports===qt,Qt=Kt&&Ht.process,Jt=function(){try{var t=Gt&&Gt.require&&Gt.require("util").types;return t||Qt&&Qt.binding&&Qt.binding("util")}catch(t){}}(),Zt=Jt&&Jt.isArrayBuffer,Vt=Jt&&Jt.isDate,te=Jt&&Jt.isMap,ee=Jt&&Jt.isRegExp,ne=Jt&&Jt.isSet,re=Jt&&Jt.isTypedArray;function ie(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function oe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function he(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Ie(t,e){for(var n=t.length;n--&&be(e,t[n],0)>-1;);return n}function De(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var $e=Ce({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),je=Ce({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ye(t){return"\\"+Rt[t]}function Xe(t){return Dt.test(t)}function Ne(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function Re(t,e){return function(n){return t(e(n))}}function ze(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var Ke=function t(e){var n,r=(e=null==e?Wt:Ke.defaults(Wt.Object(),e,Ke.pick(Wt,jt))).Array,G=e.Date,ht=e.Error,ft=e.Function,pt=e.Math,gt=e.Object,dt=e.RegExp,vt=e.String,mt=e.TypeError,yt=r.prototype,_t=ft.prototype,bt=gt.prototype,wt=e["__core-js_shared__"],kt=_t.toString,xt=bt.hasOwnProperty,Pt=0,Ct=(n=/[^.]+$/.exec(wt&&wt.keys&&wt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Tt=bt.toString,St=kt.call(gt),Lt=Wt._,At=dt("^"+kt.call(xt).replace(F,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Bt=Kt?e.Buffer:void 0,Et=e.Symbol,Dt=e.Uint8Array,Rt=Bt?Bt.allocUnsafe:void 0,Ht=Re(gt.getPrototypeOf,gt),Ft=gt.create,qt=bt.propertyIsEnumerable,Gt=yt.splice,Qt=Et?Et.isConcatSpreadable:void 0,Jt=Et?Et.iterator:void 0,me=Et?Et.toStringTag:void 0,Ce=function(){try{var t=to(gt,"defineProperty");return t({},"",{}),t}catch(t){}}(),Qe=e.clearTimeout!==Wt.clearTimeout&&e.clearTimeout,Je=G&&G.now!==Wt.Date.now&&G.now,Ze=e.setTimeout!==Wt.setTimeout&&e.setTimeout,Ve=pt.ceil,tn=pt.floor,en=gt.getOwnPropertySymbols,nn=Bt?Bt.isBuffer:void 0,rn=e.isFinite,on=yt.join,sn=Re(gt.keys,gt),an=pt.max,un=pt.min,ln=G.now,cn=e.parseInt,hn=pt.random,fn=yt.reverse,pn=to(e,"DataView"),gn=to(e,"Map"),dn=to(e,"Promise"),vn=to(e,"Set"),mn=to(e,"WeakMap"),yn=to(gt,"create"),_n=mn&&new mn,bn={},wn=Lo(pn),kn=Lo(gn),xn=Lo(dn),Pn=Lo(vn),Cn=Lo(mn),Tn=Et?Et.prototype:void 0,Sn=Tn?Tn.valueOf:void 0,Ln=Tn?Tn.toString:void 0;function An(t){if(Fs(t)&&!Is(t)&&!(t instanceof En)){if(t instanceof On)return t;if(xt.call(t,"__wrapped__"))return Ao(t)}return new On(t)}var Bn=function(){function t(){}return function(e){if(!Hs(e))return{};if(Ft)return Ft(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Mn(){}function On(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function En(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function In(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Jn(t,e,n,r,i,o){var s,u=1&e,h=2&e,w=4&e;if(n&&(s=i?n(t,r,i,o):n(t)),void 0!==s)return s;if(!Hs(t))return t;var O=Is(t);if(O){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&xt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return yi(t,s)}else{var E=ro(t),I=E==f||E==p;if(Ys(t))return fi(t,u);if(E==v||E==a||I&&!i){if(s=h||I?{}:oo(t),!u)return h?function(t,e){return _i(t,no(t),e)}(t,function(t,e){return t&&_i(e,ka(e),t)}(s,t)):function(t,e){return _i(t,eo(t),e)}(t,qn(s,t))}else{if(!Nt[E])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case k:return pi(t);case l:case c:return new r(+t);case x:return function(t,e){var n=e?pi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case P:case C:case T:case S:case L:case A:case"[object Uint8ClampedArray]":case B:case M:return gi(t,n);case g:return new r;case d:case _:return new r(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new r;case b:return i=t,Sn?gt(Sn.call(i)):{}}var i}(t,E,u)}}o||(o=new Yn);var D=o.get(t);if(D)return D;o.set(t,s),Qs(t)?t.forEach((function(r){s.add(Jn(r,e,n,r,t,o))})):Ws(t)&&t.forEach((function(r,i){s.set(i,Jn(r,e,n,i,t,o))}));var $=O?void 0:(w?h?qi:Wi:h?ka:wa)(t);return se($||t,(function(r,i){$&&(r=t[i=r]),Hn(s,i,Jn(r,e,n,i,t,o))})),s}function Zn(t,e,n){var r=n.length;if(null==t)return!r;for(t=gt(t);r--;){var i=n[r],o=e[i],s=t[i];if(void 0===s&&!(i in t)||!o(s))return!1}return!0}function Vn(t,e,n){if("function"!=typeof t)throw new mt(i);return wo((function(){t.apply(void 0,n)}),e)}function tr(t,e,n,r){var i=-1,o=ce,s=!0,a=t.length,u=[],l=e.length;if(!a)return u;n&&(e=fe(e,Be(n))),r?(o=he,s=!1):e.length>=200&&(o=Oe,s=!1,e=new jn(e));t:for(;++i-1},Dn.prototype.set=function(t,e){var n=this.__data__,r=Fn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},$n.prototype.clear=function(){this.size=0,this.__data__={hash:new In,map:new(gn||Dn),string:new In}},$n.prototype.delete=function(t){var e=Zi(this,t).delete(t);return this.size-=e?1:0,e},$n.prototype.get=function(t){return Zi(this,t).get(t)},$n.prototype.has=function(t){return Zi(this,t).has(t)},$n.prototype.set=function(t,e){var n=Zi(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},jn.prototype.add=jn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},jn.prototype.has=function(t){return this.__data__.has(t)},Yn.prototype.clear=function(){this.__data__=new Dn,this.size=0},Yn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Yn.prototype.get=function(t){return this.__data__.get(t)},Yn.prototype.has=function(t){return this.__data__.has(t)},Yn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Dn){var r=n.__data__;if(!gn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new $n(r)}return n.set(t,e),this.size=n.size,this};var er=ki(lr),nr=ki(cr,!0);function rr(t,e){var n=!0;return er(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function ir(t,e,n){for(var r=-1,i=t.length;++r0&&n(a)?e>1?sr(a,e-1,n,r,i):pe(i,a):r||(i[i.length]=a)}return i}var ar=xi(),ur=xi(!0);function lr(t,e){return t&&ar(t,e,wa)}function cr(t,e){return t&&ur(t,e,wa)}function hr(t,e){return le(e,(function(e){return Rs(t[e])}))}function fr(t,e){for(var n=0,r=(e=ui(e,t)).length;null!=t&&ne}function vr(t,e){return null!=t&&xt.call(t,e)}function mr(t,e){return null!=t&&e in gt(t)}function yr(t,e,n){for(var i=n?he:ce,o=t[0].length,s=t.length,a=s,u=r(s),l=1/0,c=[];a--;){var h=t[a];a&&e&&(h=fe(h,Be(e))),l=un(h.length,l),u[a]=!n&&(e||o>=120&&h.length>=120)?new jn(a&&h):void 0}h=t[0];var f=-1,p=u[0];t:for(;++f=a)return u;var l=n[r];return u*("desc"==l?-1:1)}}return t.index-e.index}(t,e,n)}))}function Ir(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Gt.call(a,u,1),Gt.call(t,u,1);return t}function $r(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;ao(i)?Gt.call(t,i,1):ti(t,i)}}return t}function jr(t,e){return t+tn(hn()*(e-t+1))}function Yr(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=tn(e/2))&&(t+=t)}while(e);return n}function Xr(t,e){return ko(vo(t,e,qa),t+"")}function Nr(t){return Nn(Ba(t))}function Rr(t,e){var n=Ba(t);return Co(n,Qn(e,0,n.length))}function zr(t,e,n,r){if(!Hs(t))return t;for(var i=-1,o=(e=ui(e,t)).length,s=o-1,a=t;null!=a&&++io?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var s=r(o);++i>>1,s=t[o];null!==s&&!Zs(s)&&(n?s<=e:s=200){var l=e?null:Yi(t);if(l)return Ue(l);s=!1,i=Oe,u=new jn}else u=e?[]:a;t:for(;++r=r?t:Wr(t,e,n)}var hi=Qe||function(t){return Wt.clearTimeout(t)};function fi(t,e){if(e)return t.slice();var n=t.length,r=Rt?Rt(n):new t.constructor(n);return t.copy(r),r}function pi(t){var e=new t.constructor(t.byteLength);return new Dt(e).set(new Dt(t)),e}function gi(t,e){var n=e?pi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function di(t,e){if(t!==e){var n=void 0!==t,r=null===t,i=t==t,o=Zs(t),s=void 0!==e,a=null===e,u=e==e,l=Zs(e);if(!a&&!l&&!o&&t>e||o&&s&&u&&!a&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!o&&!l&&t1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(i--,o):void 0,s&&uo(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),e=gt(e);++r-1?i[o?e[s]:s]:void 0}}function Li(t){return Fi((function(e){var n=e.length,r=n,o=On.prototype.thru;for(t&&e.reverse();r--;){var s=e[r];if("function"!=typeof s)throw new mt(i);if(o&&!a&&"wrapper"==Ki(s))var a=new On([],!0)}for(r=a?r:n;++r1&&_.reverse(),h&&la))return!1;var l=o.get(t),c=o.get(e);if(l&&c)return l==e&&c==t;var h=-1,f=!0,p=2&n?new jn:void 0;for(o.set(t,e),o.set(e,t);++h-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(K,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return se(s,(function(n){var r="_."+n[0];e&n[1]&&!ce(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Q);return e?e[1].split(J):[]}(r),n)))}function Po(t){var e=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function Co(t,e){var n=-1,r=t.length,i=r-1;for(e=void 0===e?r:e;++n1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Ko(t,n)}));function ns(t){var e=An(t);return e.__chain__=!0,e}function rs(t,e){return e(t)}var is=Fi((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Kn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof En&&ao(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:rs,args:[i],thisArg:void 0}),new On(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(i)}));var os=bi((function(t,e,n){xt.call(t,n)?++t[n]:Gn(t,n,1)}));var ss=Si(Eo),as=Si(Io);function us(t,e){return(Is(t)?se:er)(t,Ji(e,3))}function ls(t,e){return(Is(t)?ae:nr)(t,Ji(e,3))}var cs=bi((function(t,e,n){xt.call(t,n)?t[n].push(e):Gn(t,n,[e])}));var hs=Xr((function(t,e,n){var i=-1,o="function"==typeof e,s=$s(t)?r(t.length):[];return er(t,(function(t){s[++i]=o?ie(e,t,n):_r(t,e,n)})),s})),fs=bi((function(t,e,n){Gn(t,n,e)}));function ps(t,e){return(Is(t)?fe:Lr)(t,Ji(e,3))}var gs=bi((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var ds=Xr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&uo(t,e[0],e[1])?e=[]:n>2&&uo(e[0],e[1],e[2])&&(e=[e[0]]),Er(t,sr(e,1),[])})),vs=Je||function(){return Wt.Date.now()};function ms(t,e,n){return e=n?void 0:e,Ni(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function ys(t,e){var n;if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var _s=Xr((function(t,e,n){var r=1;if(n.length){var i=ze(n,Qi(_s));r|=32}return Ni(t,r,e,n,i)})),bs=Xr((function(t,e,n){var r=3;if(n.length){var i=ze(n,Qi(bs));r|=32}return Ni(e,r,t,n,i)}));function ws(t,e,n){var r,o,s,a,u,l,c=0,h=!1,f=!1,p=!0;if("function"!=typeof t)throw new mt(i);function g(e){var n=r,i=o;return r=o=void 0,c=e,a=t.apply(i,n)}function d(t){return c=t,u=wo(m,e),h?g(t):a}function v(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-c>=s}function m(){var t=vs();if(v(t))return y(t);u=wo(m,function(t){var n=e-(t-l);return f?un(n,s-(t-c)):n}(t))}function y(t){return u=void 0,p&&r?g(t):(r=o=void 0,a)}function _(){var t=vs(),n=v(t);if(r=arguments,o=this,l=t,n){if(void 0===u)return d(l);if(f)return hi(u),u=wo(m,e),g(l)}return void 0===u&&(u=wo(m,e)),a}return e=sa(e)||0,Hs(n)&&(h=!!n.leading,s=(f="maxWait"in n)?an(sa(n.maxWait)||0,e):s,p="trailing"in n?!!n.trailing:p),_.cancel=function(){void 0!==u&&hi(u),c=0,r=l=o=u=void 0},_.flush=function(){return void 0===u?a:y(vs())},_}var ks=Xr((function(t,e){return Vn(t,1,e)})),xs=Xr((function(t,e,n){return Vn(t,sa(e)||0,n)}));function Ps(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new mt(i);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ps.Cache||$n),n}function Cs(t){if("function"!=typeof t)throw new mt(i);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ps.Cache=$n;var Ts=li((function(t,e){var n=(e=1==e.length&&Is(e[0])?fe(e[0],Be(Ji())):fe(sr(e,1),Be(Ji()))).length;return Xr((function(r){for(var i=-1,o=un(r.length,n);++i=e})),Es=br(function(){return arguments}())?br:function(t){return Fs(t)&&xt.call(t,"callee")&&!qt.call(t,"callee")},Is=r.isArray,Ds=Zt?Be(Zt):function(t){return Fs(t)&&gr(t)==k};function $s(t){return null!=t&&Us(t.length)&&!Rs(t)}function js(t){return Fs(t)&&$s(t)}var Ys=nn||su,Xs=Vt?Be(Vt):function(t){return Fs(t)&&gr(t)==c};function Ns(t){if(!Fs(t))return!1;var e=gr(t);return e==h||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Gs(t)}function Rs(t){if(!Hs(t))return!1;var e=gr(t);return e==f||e==p||"[object AsyncFunction]"==e||"[object Proxy]"==e}function zs(t){return"number"==typeof t&&t==ia(t)}function Us(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Hs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Fs(t){return null!=t&&"object"==typeof t}var Ws=te?Be(te):function(t){return Fs(t)&&ro(t)==g};function qs(t){return"number"==typeof t||Fs(t)&&gr(t)==d}function Gs(t){if(!Fs(t)||gr(t)!=v)return!1;var e=Ht(t);if(null===e)return!0;var n=xt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&kt.call(n)==St}var Ks=ee?Be(ee):function(t){return Fs(t)&&gr(t)==m};var Qs=ne?Be(ne):function(t){return Fs(t)&&ro(t)==y};function Js(t){return"string"==typeof t||!Is(t)&&Fs(t)&&gr(t)==_}function Zs(t){return"symbol"==typeof t||Fs(t)&&gr(t)==b}var Vs=re?Be(re):function(t){return Fs(t)&&Us(t.length)&&!!Xt[gr(t)]};var ta=Di(Sr),ea=Di((function(t,e){return t<=e}));function na(t){if(!t)return[];if($s(t))return Js(t)?We(t):yi(t);if(Jt&&t[Jt])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Jt]());var e=ro(t);return(e==g?Ne:e==y?Ue:Ba)(t)}function ra(t){return t?(t=sa(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ia(t){var e=ra(t),n=e%1;return e==e?n?e-n:e:0}function oa(t){return t?Qn(ia(t),0,4294967295):0}function sa(t){if("number"==typeof t)return t;if(Zs(t))return NaN;if(Hs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Hs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ae(t);var n=it.test(t);return n||st.test(t)?Ut(t.slice(2),n?2:8):rt.test(t)?NaN:+t}function aa(t){return _i(t,ka(t))}function ua(t){return null==t?"":Zr(t)}var la=wi((function(t,e){if(fo(e)||$s(e))_i(e,wa(e),t);else for(var n in e)xt.call(e,n)&&Hn(t,n,e[n])})),ca=wi((function(t,e){_i(e,ka(e),t)})),ha=wi((function(t,e,n,r){_i(e,ka(e),t,r)})),fa=wi((function(t,e,n,r){_i(e,wa(e),t,r)})),pa=Fi(Kn);var ga=Xr((function(t,e){t=gt(t);var n=-1,r=e.length,i=r>2?e[2]:void 0;for(i&&uo(e[0],e[1],i)&&(r=1);++n1),e})),_i(t,qi(t),n),r&&(n=Jn(n,7,Ui));for(var i=e.length;i--;)ti(n,e[i]);return n}));var Ta=Fi((function(t,e){return null==t?{}:function(t,e){return Ir(t,e,(function(e,n){return ma(t,n)}))}(t,e)}));function Sa(t,e){if(null==t)return{};var n=fe(qi(t),(function(t){return[t]}));return e=Ji(e),Ir(t,n,(function(t,n){return e(t,n[0])}))}var La=Xi(wa),Aa=Xi(ka);function Ba(t){return null==t?[]:Me(t,wa(t))}var Ma=Ci((function(t,e,n){return e=e.toLowerCase(),t+(n?Oa(e):e)}));function Oa(t){return Na(ua(t).toLowerCase())}function Ea(t){return(t=ua(t))&&t.replace(ut,$e).replace(Ot,"")}var Ia=Ci((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Da=Ci((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),$a=Pi("toLowerCase");var ja=Ci((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Ya=Ci((function(t,e,n){return t+(n?" ":"")+Na(e)}));var Xa=Ci((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Na=Pi("toUpperCase");function Ra(t,e,n){return t=ua(t),void 0===(e=n?void 0:e)?function(t){return $t.test(t)}(t)?function(t){return t.match(It)||[]}(t):function(t){return t.match(Z)||[]}(t):t.match(e)||[]}var za=Xr((function(t,e){try{return ie(t,void 0,e)}catch(t){return Ns(t)?t:new ht(t)}})),Ua=Fi((function(t,e){return se(e,(function(e){e=So(e),Gn(t,e,_s(t[e],t))})),t}));function Ha(t){return function(){return t}}var Fa=Li(),Wa=Li(!0);function qa(t){return t}function Ga(t){return Pr("function"==typeof t?t:Jn(t,1))}var Ka=Xr((function(t,e){return function(n){return _r(n,t,e)}})),Qa=Xr((function(t,e){return function(n){return _r(t,n,e)}}));function Ja(t,e,n){var r=wa(e),i=hr(e,r);null!=n||Hs(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=hr(e,wa(e)));var o=!(Hs(n)&&"chain"in n&&!n.chain),s=Rs(t);return se(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=yi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,pe([this.value()],arguments))})})),t}function Za(){}var Va=Oi(fe),tu=Oi(ue),eu=Oi(ve);function nu(t){return lo(t)?Pe(So(t)):function(t){return function(e){return fr(e,t)}}(t)}var ru=Ii(),iu=Ii(!0);function ou(){return[]}function su(){return!1}var au=Mi((function(t,e){return t+e}),0),uu=ji("ceil"),lu=Mi((function(t,e){return t/e}),1),cu=ji("floor");var hu,fu=Mi((function(t,e){return t*e}),1),pu=ji("round"),gu=Mi((function(t,e){return t-e}),0);return An.after=function(t,e){if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){if(--t<1)return e.apply(this,arguments)}},An.ary=ms,An.assign=la,An.assignIn=ca,An.assignInWith=ha,An.assignWith=fa,An.at=pa,An.before=ys,An.bind=_s,An.bindAll=Ua,An.bindKey=bs,An.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Is(t)?t:[t]},An.chain=ns,An.chunk=function(t,e,n){e=(n?uo(t,e,n):void 0===e)?1:an(ia(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=r(Ve(i/e));oi?0:i+n),(r=void 0===r||r>i?i:ia(r))<0&&(r+=i),r=n>r?0:oa(r);n>>0)?(t=ua(t))&&("string"==typeof e||null!=e&&!Ks(e))&&!(e=Zr(e))&&Xe(t)?ci(We(t),0,n):t.split(e,n):[]},An.spread=function(t,e){if("function"!=typeof t)throw new mt(i);return e=null==e?0:an(ia(e),0),Xr((function(n){var r=n[e],i=ci(n,0,e);return r&&pe(i,r),ie(t,this,i)}))},An.tail=function(t){var e=null==t?0:t.length;return e?Wr(t,1,e):[]},An.take=function(t,e,n){return t&&t.length?Wr(t,0,(e=n||void 0===e?1:ia(e))<0?0:e):[]},An.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Wr(t,(e=r-(e=n||void 0===e?1:ia(e)))<0?0:e,r):[]},An.takeRightWhile=function(t,e){return t&&t.length?ni(t,Ji(e,3),!1,!0):[]},An.takeWhile=function(t,e){return t&&t.length?ni(t,Ji(e,3)):[]},An.tap=function(t,e){return e(t),t},An.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new mt(i);return Hs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ws(t,e,{leading:r,maxWait:e,trailing:o})},An.thru=rs,An.toArray=na,An.toPairs=La,An.toPairsIn=Aa,An.toPath=function(t){return Is(t)?fe(t,So):Zs(t)?[t]:yi(To(ua(t)))},An.toPlainObject=aa,An.transform=function(t,e,n){var r=Is(t),i=r||Ys(t)||Vs(t);if(e=Ji(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Hs(t)&&Rs(o)?Bn(Ht(t)):{}}return(i?se:lr)(t,(function(t,r,i){return e(n,t,r,i)})),n},An.unary=function(t){return ms(t,1)},An.union=Fo,An.unionBy=Wo,An.unionWith=qo,An.uniq=function(t){return t&&t.length?Vr(t):[]},An.uniqBy=function(t,e){return t&&t.length?Vr(t,Ji(e,2)):[]},An.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Vr(t,void 0,e):[]},An.unset=function(t,e){return null==t||ti(t,e)},An.unzip=Go,An.unzipWith=Ko,An.update=function(t,e,n){return null==t?t:ei(t,e,ai(n))},An.updateWith=function(t,e,n,r){return r="function"==typeof r?r:void 0,null==t?t:ei(t,e,ai(n),r)},An.values=Ba,An.valuesIn=function(t){return null==t?[]:Me(t,ka(t))},An.without=Qo,An.words=Ra,An.wrap=function(t,e){return Ss(ai(e),t)},An.xor=Jo,An.xorBy=Zo,An.xorWith=Vo,An.zip=ts,An.zipObject=function(t,e){return oi(t||[],e||[],Hn)},An.zipObjectDeep=function(t,e){return oi(t||[],e||[],zr)},An.zipWith=es,An.entries=La,An.entriesIn=Aa,An.extend=ca,An.extendWith=ha,Ja(An,An),An.add=au,An.attempt=za,An.camelCase=Ma,An.capitalize=Oa,An.ceil=uu,An.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=sa(n))==n?n:0),void 0!==e&&(e=(e=sa(e))==e?e:0),Qn(sa(t),e,n)},An.clone=function(t){return Jn(t,4)},An.cloneDeep=function(t){return Jn(t,5)},An.cloneDeepWith=function(t,e){return Jn(t,5,e="function"==typeof e?e:void 0)},An.cloneWith=function(t,e){return Jn(t,4,e="function"==typeof e?e:void 0)},An.conformsTo=function(t,e){return null==e||Zn(t,e,wa(e))},An.deburr=Ea,An.defaultTo=function(t,e){return null==t||t!=t?e:t},An.divide=lu,An.endsWith=function(t,e,n){t=ua(t),e=Zr(e);var r=t.length,i=n=void 0===n?r:Qn(ia(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},An.eq=Bs,An.escape=function(t){return(t=ua(t))&&Y.test(t)?t.replace($,je):t},An.escapeRegExp=function(t){return(t=ua(t))&&W.test(t)?t.replace(F,"\\$&"):t},An.every=function(t,e,n){var r=Is(t)?ue:rr;return n&&uo(t,e,n)&&(e=void 0),r(t,Ji(e,3))},An.find=ss,An.findIndex=Eo,An.findKey=function(t,e){return ye(t,Ji(e,3),lr)},An.findLast=as,An.findLastIndex=Io,An.findLastKey=function(t,e){return ye(t,Ji(e,3),cr)},An.floor=cu,An.forEach=us,An.forEachRight=ls,An.forIn=function(t,e){return null==t?t:ar(t,Ji(e,3),ka)},An.forInRight=function(t,e){return null==t?t:ur(t,Ji(e,3),ka)},An.forOwn=function(t,e){return t&&lr(t,Ji(e,3))},An.forOwnRight=function(t,e){return t&&cr(t,Ji(e,3))},An.get=va,An.gt=Ms,An.gte=Os,An.has=function(t,e){return null!=t&&io(t,e,vr)},An.hasIn=ma,An.head=$o,An.identity=qa,An.includes=function(t,e,n,r){t=$s(t)?t:Ba(t),n=n&&!r?ia(n):0;var i=t.length;return n<0&&(n=an(i+n,0)),Js(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&be(t,e,n)>-1},An.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ia(n);return i<0&&(i=an(r+i,0)),be(t,e,i)},An.inRange=function(t,e,n){return e=ra(e),void 0===n?(n=e,e=0):n=ra(n),function(t,e,n){return t>=un(e,n)&&t=-9007199254740991&&t<=9007199254740991},An.isSet=Qs,An.isString=Js,An.isSymbol=Zs,An.isTypedArray=Vs,An.isUndefined=function(t){return void 0===t},An.isWeakMap=function(t){return Fs(t)&&ro(t)==w},An.isWeakSet=function(t){return Fs(t)&&"[object WeakSet]"==gr(t)},An.join=function(t,e){return null==t?"":on.call(t,e)},An.kebabCase=Ia,An.last=No,An.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ia(n))<0?an(r+i,0):un(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):_e(t,ke,i,!0)},An.lowerCase=Da,An.lowerFirst=$a,An.lt=ta,An.lte=ea,An.max=function(t){return t&&t.length?ir(t,qa,dr):void 0},An.maxBy=function(t,e){return t&&t.length?ir(t,Ji(e,2),dr):void 0},An.mean=function(t){return xe(t,qa)},An.meanBy=function(t,e){return xe(t,Ji(e,2))},An.min=function(t){return t&&t.length?ir(t,qa,Sr):void 0},An.minBy=function(t,e){return t&&t.length?ir(t,Ji(e,2),Sr):void 0},An.stubArray=ou,An.stubFalse=su,An.stubObject=function(){return{}},An.stubString=function(){return""},An.stubTrue=function(){return!0},An.multiply=fu,An.nth=function(t,e){return t&&t.length?Or(t,ia(e)):void 0},An.noConflict=function(){return Wt._===this&&(Wt._=Lt),this},An.noop=Za,An.now=vs,An.pad=function(t,e,n){t=ua(t);var r=(e=ia(e))?Fe(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Ei(tn(i),n)+t+Ei(Ve(i),n)},An.padEnd=function(t,e,n){t=ua(t);var r=(e=ia(e))?Fe(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=hn();return un(t+i*(e-t+zt("1e-"+((i+"").length-1))),e)}return jr(t,e)},An.reduce=function(t,e,n){var r=Is(t)?ge:Te,i=arguments.length<3;return r(t,Ji(e,4),n,i,er)},An.reduceRight=function(t,e,n){var r=Is(t)?de:Te,i=arguments.length<3;return r(t,Ji(e,4),n,i,nr)},An.repeat=function(t,e,n){return e=(n?uo(t,e,n):void 0===e)?1:ia(e),Yr(ua(t),e)},An.replace=function(){var t=arguments,e=ua(t[0]);return t.length<3?e:e.replace(t[1],t[2])},An.result=function(t,e,n){var r=-1,i=(e=ui(e,t)).length;for(i||(i=1,t=void 0);++r9007199254740991)return[];var n=4294967295,r=un(t,4294967295);t-=4294967295;for(var i=Le(r,e=Ji(e));++n=o)return t;var a=n-Fe(r);if(a<1)return r;var u=s?ci(s,0,a).join(""):t.slice(0,a);if(void 0===i)return u+r;if(s&&(a+=u.length-a),Ks(i)){if(t.slice(a).search(i)){var l,c=u;for(i.global||(i=dt(i.source,ua(nt.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var h=l.index;u=u.slice(0,void 0===h?a:h)}}else if(t.indexOf(Zr(i),a)!=a){var f=u.lastIndexOf(i);f>-1&&(u=u.slice(0,f))}return u+r},An.unescape=function(t){return(t=ua(t))&&j.test(t)?t.replace(D,Ge):t},An.uniqueId=function(t){var e=++Pt;return ua(t)+e},An.upperCase=Xa,An.upperFirst=Na,An.each=us,An.eachRight=ls,An.first=$o,Ja(An,(hu={},lr(An,(function(t,e){xt.call(An.prototype,e)||(hu[e]=t)})),hu),{chain:!1}),An.VERSION="4.17.21",se(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){An[t].placeholder=An})),se(["drop","take"],(function(t,e){En.prototype[t]=function(n){n=void 0===n?1:an(ia(n),0);var r=this.__filtered__&&!e?new En(this):this.clone();return r.__filtered__?r.__takeCount__=un(n,r.__takeCount__):r.__views__.push({size:un(n,4294967295),type:t+(r.__dir__<0?"Right":"")}),r},En.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),se(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;En.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Ji(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),se(["head","last"],(function(t,e){var n="take"+(e?"Right":"");En.prototype[t]=function(){return this[n](1).value()[0]}})),se(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");En.prototype[t]=function(){return this.__filtered__?new En(this):this[n](1)}})),En.prototype.compact=function(){return this.filter(qa)},En.prototype.find=function(t){return this.filter(t).head()},En.prototype.findLast=function(t){return this.reverse().find(t)},En.prototype.invokeMap=Xr((function(t,e){return"function"==typeof t?new En(this):this.map((function(n){return _r(n,t,e)}))})),En.prototype.reject=function(t){return this.filter(Cs(Ji(t)))},En.prototype.slice=function(t,e){t=ia(t);var n=this;return n.__filtered__&&(t>0||e<0)?new En(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=ia(e))<0?n.dropRight(-e):n.take(e-t)),n)},En.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},En.prototype.toArray=function(){return this.take(4294967295)},lr(En.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=An[r?"take"+("last"==e?"Right":""):e],o=r||/^find/.test(e);i&&(An.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,a=e instanceof En,u=s[0],l=a||Is(e),c=function(t){var e=i.apply(An,pe([t],s));return r&&h?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(a=l=!1);var h=this.__chain__,f=!!this.__actions__.length,p=o&&!h,g=a&&!f;if(!o&&l){e=g?e:new En(this);var d=t.apply(e,s);return d.__actions__.push({func:rs,args:[c],thisArg:void 0}),new On(d,h)}return p&&g?t.apply(this,s):(d=this.thru(c),p?r?d.value()[0]:d.value():d)})})),se(["pop","push","shift","sort","splice","unshift"],(function(t){var e=yt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);An.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Is(i)?i:[],t)}return this[n]((function(n){return e.apply(Is(n)?n:[],t)}))}})),lr(En.prototype,(function(t,e){var n=An[e];if(n){var r=n.name+"";xt.call(bn,r)||(bn[r]=[]),bn[r].push({name:e,func:n})}})),bn[Ai(void 0,2).name]=[{name:"wrapper",func:void 0}],En.prototype.clone=function(){var t=new En(this.__wrapped__);return t.__actions__=yi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=yi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=yi(this.__views__),t},En.prototype.reverse=function(){if(this.__filtered__){var t=new En(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},En.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Is(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},An.prototype.plant=function(t){for(var e,n=this;n instanceof Mn;){var r=Ao(n);r.__index__=0,r.__values__=void 0,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},An.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof En){var e=t;return this.__actions__.length&&(e=new En(this)),(e=e.reverse()).__actions__.push({func:rs,args:[Ho],thisArg:void 0}),new On(e,this.__chain__)}return this.thru(Ho)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return ri(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,Jt&&(An.prototype[Jt]=function(){return this}),An}();Wt._=Ke,void 0===(r=function(){return Ke}.call(e,n,e,t))||(t.exports=r)}).call(this)}).call(this,n(67)(t))},297:function(t,e,n){},298:function(t,e,n){},299:function(t,e,n){},300:function(t,e,n){},301:function(t,e,n){},302:function(t,e,n){},303:function(t,e){t.exports=function(t){return null==t}},304:function(t,e,n){},305:function(t,e,n){},306:function(t,e,n){},307:function(t,e,n){},308:function(t,e,n){},309:function(t,e,n){},310:function(t,e,n){},311:function(t,e,n){},312:function(t,e,n){},313:function(t,e,n){},314:function(t,e,n){},315:function(t,e,n){},316:function(t,e,n){},317:function(t,e,n){},318:function(t,e,n){},319:function(t,e,n){},322:function(t,e,n){"use strict";n.r(e);n(4),n(64);var r=n(20),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(323).a},beforeCreate(){this.$options.components.SidebarLinks=n(322).default},methods:{isActive:r.f}},o=(n(359),n(14)),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return e("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?e("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):e("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),e("DropdownTransition",[t.open||!t.collapsable?e("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(295),n(21);function a(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,o,s=1){return!e||s>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const l=Object(r.f)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header level"+e.level},[a(t,n+"#"+e.slug,e.title,l),u(t,e.children,n,i,o,s+1)])}))}var l={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:i,$themeConfig:o,$themeLocaleConfig:s},props:{item:l,sidebarDepth:c}}){const h=Object(r.f)(i,l.path),f="auto"===l.type?h||l.children.some(t=>Object(r.f)(i,l.basePath+"#"+t.slug)):h,p="external"===l.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,l.path,l.title||l.path):a(t,l.path,l.title||l.path,f),g=[e.frontmatter.sidebarDepth,c,s.sidebarDepth,o.sidebarDepth,1].find(t=>void 0!==t),d=s.displayAllHeaders||o.displayAllHeaders;if("auto"===l.type)return[p,u(t,l.children,l.basePath,i,g)];if((f||d)&&l.headers&&!r.e.test(l.path)){return[p,u(t,Object(r.d)(l.headers),l.path,i,g)]}return p}};n(360);function c(t,e){return"group"===e.type&&e.children.some(e=>"group"===e.type?c(t,e):"page"===e.type&&Object(r.f)(t,e.path))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(o.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data(){return{openGroupIndex:this.initialOpenGroupIndex||0}},created(){this.refreshIndex()},watch:{$route(){this.refreshIndex()}},methods:{refreshIndex(){const t=function(t,e){for(let n=0;n-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(r.f)(this.$route,t.regularPath)}}},f=Object(o.a)(h,(function(){var t=this,e=t._self._c;return t.items.length?e("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(n,r){return e("li",{key:r},["group"===n.type?e("SidebarGroup",{attrs:{item:n,open:r===t.openGroupIndex,collapsable:n.collapsable||n.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):e("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:n}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=f.exports},323:function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},i=(n(345),n(14)),o=Object(i.a)(r,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=o.exports},325:function(t,e,n){"use strict";n(286)},326:function(t,e,n){"use strict";n(287)},327:function(t,e,n){"use strict";n(288)},328:function(t,e,n){"use strict";n(289)},329:function(t,e,n){"use strict";n(290)},330:function(t,e,n){"use strict";n(291)},331:function(t,e,n){"use strict";n(292)},332:function(t,e,n){"use strict";n(293)},333:function(t,e,n){"use strict";var r=n(44),i=n(5),o=n(122),s=n(294),a=URLSearchParams,u=a.prototype,l=i(u.append),c=i(u.delete),h=i(u.forEach),f=i([].push),p=new a("a=1&a=2&b=3");p.delete("a",1),p.delete("b",void 0),p+""!="a=2"&&r(u,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return c(this,t);var r=[];h(this,(function(t,e){f(r,{key:e,value:t})})),s(e,1);for(var i,a=o(t),u=o(n),p=0,g=0,d=!1,v=r.length;p1?arguments[1]:void 0)}}),o("findLastIndex")},337:function(t,e,n){"use strict";var r=n(124),i=n(65),o=n(30),s=n(31),a=function(t){var e=1===t;return function(n,a,u){for(var l,c=o(n),h=i(c),f=s(h),p=r(a,u);f-- >0;)if(p(l=h[f],f,c))switch(t){case 0:return l;case 1:return f}return e?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}},338:function(t,e,n){"use strict";var r=n(16),i=n(66),o=n(17).f,s=r("unscopables"),a=Array.prototype;void 0===a[s]&&o(a,s,{configurable:!0,value:i(null)}),t.exports=function(t){a[s][t]=!0}},339:function(t,e,n){"use strict";n(340)},340:function(t,e,n){"use strict";var r=n(10),i=n(45),o=n(7),s=n(1),a=n(25);r({target:"Iterator",proto:!0,real:!0},{every:function(t){s(this),o(t);var e=a(this),n=0;return!i(e,(function(e,r){if(!t(e,n++))return r()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},341:function(t,e,n){"use strict";var r=n(10),i=n(45),o=n(7),s=n(1),a=n(25);r({target:"Iterator",proto:!0,real:!0},{find:function(t){s(this),o(t);var e=a(this),n=0;return i(e,(function(e,r){if(t(e,n++))return r(e)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})},342:function(t,e,n){"use strict";!function(e,n,r){let i;(i=r.define)&&i.amd?i([],(function(){return n})):(i=r.modules)?i["FlexSearch".toLowerCase()]=n:t.exports=n}(0,function t(e){function n(t,e){const n=e?e.id:t&&t.id;this.id=n||0===n?n:A++,this.init(t,e),s(this,"index",(function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)})),s(this,"length",(function(){return this.index.length}))}function r(t,e,n,r){return this.u!==this.g&&(this.o=this.o.concat(n),this.u++,r&&this.o.length>=r&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(e,this.o),this.F&&this.F(this.o))),this}function i(t,e){const n=t.length,r=_(e),i=[];for(let o=0,s=0;o=s&&((t=(t=t[a-(i+.5>>0)])[n]||(t[n]=[]))[t.length]=r),i)}function c(t,e){if(t){const n=Object.keys(t);for(let r=0,i=n.length;r(t=t.length-e.length)?1:t?-1:0}function p(t,e){return(t=t[O])<(e=e[O])?-1:t>e?1:0}function g(t,e){const n=O.length;for(let r=0;re?1:0}function d(t,e,n){return t?{page:t,next:e?""+e:null,result:n}:n}function v(t,e,n,r,i,o,s){let a,u=[];if(!0===n){n="0";var l=""}else l=n&&n.split(":");const c=t.length;if(1s&&(l=0),a=(l=l||0)+e,a=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:t,content:e}),this.c[s]=""+this.C,n&&n(),this;if(!o){if(this.async&&"function"!=typeof importScripts){let i=this;return s=new Promise((function(n){setTimeout((function(){i.add(t,e,null,r,!0),i=null,n()}))})),n?(s.then(n),this):s}if(n)return this.add(t,e,null,r,!0),n(),this}if(!(e=this.encode(e)).length)return this;o=_(n=this.f)?n(e):e.split(this.split),this.filter&&(o=i(o,this.filter));const p=x();p._ctx=x();const g=o.length,d=this.threshold,v=this.depth,m=this.b,y=this.i,b=this.D;for(let e=0;ef;n--)l(y,p,h=a.substring(f,n),t,e,c,d,m-1)}break;default:if(u=l(y,p,a,t,1,c,d,m-1),v&&1=d)for(u=p._ctx[a]||(p._ctx[a]=x()),a=this.h[a]||(this.h[a]=k(m-(d||0))),0>(c=e-v)&&(c=0),(h=e+v+1)>g&&(h=g);ci;n--)r=o[n-1],o[n]=r,e[r]=n;o[i]=t,e[t]=i}}}return e},t}();return n}(function(){const t={},e="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;return function(n,r,i,o,s){return i=e?URL.createObjectURL(new Blob(["("+i.toString()+")()"],{type:"text/javascript"})):n+".min.js",t[n+="-"+r]||(t[n]=[]),t[n][s]=new Worker(i),t[n][s].onmessage=o,t[n][s]}}()),this)},343:function(t,e,n){"use strict";n(297)},344:function(t,e,n){"use strict";n(298)},345:function(t,e,n){"use strict";n(299)},346:function(t,e,n){"use strict";n(300)},347:function(t,e,n){"use strict";n(301)},348:function(t,e,n){"use strict";n(302)},349:function(t,e,n){"use strict";n(304)},350:function(t,e,n){var r=n(26),i=n(11),o=n(22);t.exports=function(t){return"string"==typeof t||!i(t)&&o(t)&&"[object String]"==r(t)}},351:function(t,e,n){"use strict";n(305)},352:function(t,e,n){"use strict";n(306)},353:function(t,e,n){"use strict";n(307)},354:function(t,e,n){"use strict";n(308)},355:function(t,e,n){"use strict";n(309)},356:function(t,e,n){"use strict";n(310)},357:function(t,e,n){"use strict";n(311)},358:function(t,e,n){"use strict";n(312)},359:function(t,e,n){"use strict";n(313)},360:function(t,e,n){"use strict";n(314)},361:function(t,e,n){"use strict";n(315)},362:function(t,e,n){"use strict";n(316)},363:function(t,e,n){"use strict";n(317)},364:function(t,e,n){"use strict";n(318)},365:function(t,e,n){"use strict";n(319)},370:function(t,e,n){"use strict";n.r(e);n(4),n(64);var r=n(20),i={props:{item:{required:!0}},computed:{link(){return Object(r.c)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:r.g,isMailto:r.h,isTel:r.i,focusoutAction(){this.$emit("focusout")}}},o=n(14),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v(t._s(t.item.text))])}),[],!1,null,null,null).exports,a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};function u(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var l=function(){return(l=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0,m=function(){if("string"==typeof g){var t=/os (\d\d?_\d(_\d)?)/.exec(g);if(!t)return!1;var e=t[1].split("_").map((function(t){return parseInt(t,10)}));return!!(13===e[0]&&e[1]>=4)}return!1}(),y=!1;if(p){try{var _={};Object.defineProperty(_,"passive",{get:function(){y=!0}}),window.addEventListener("test-passive",(function(){}),_)}catch(t){}}function b(){return window.performance&&window.performance.now&&window.performance.timing?window.performance.now()+window.performance.timing.navigationStart:+new Date}var w=function(t,e){for(var n in e)t[n]=e[n];return t};function k(t){return null==t}function x(t,e,n){return tn?n:t}var P=p&&document.createElement("div").style,C=function(){if(!p)return!1;for(var t=0,e=[{key:"standard",value:"transform"},{key:"webkit",value:"webkitTransform"},{key:"Moz",value:"MozTransform"},{key:"O",value:"OTransform"},{key:"ms",value:"msTransform"}];tdocument.documentElement.clientWidth-u||a>document.documentElement.clientHeight-u||s0?-1:n<0?1:0},o=i(e.x,t.x),s=i(e.y,t.y),a=n.x-r.x,u=n.y-r.y;return o*a<=0&&s*u<=0})(t,e,o,r)&&n.hooks.trigger(n.hooks.eventTypes.move,o),n.pending||(n.callStopWhenPending?n.callStopWhenPending=!1:n.hooks.trigger(n.hooks.eventTypes.end,o)),r=o,n.pending&&(n.timer=W(i))};this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),i()},e.prototype.transitionTime=function(t){void 0===t&&(t=0),this.style[j.transitionDuration]=t+"ms",this.hooks.trigger(this.hooks.eventTypes.time,t)},e.prototype.transitionTimingFunction=function(t){this.style[j.transitionTimingFunction]=t,this.hooks.trigger(this.hooks.eventTypes.timeFunction,t)},e.prototype.transitionProperty=function(){this.style[j.transitionProperty]=j.transform},e.prototype.move=function(t,e,n,r){this.setPending(n>0),this.transitionTimingFunction(r),this.transitionProperty(),this.transitionTime(n),this.translate(e);var i=3===this.options.probeType;n&&i&&this.startProbe(t,e),n||(this._reflow=this.content.offsetHeight,i&&this.hooks.trigger(this.hooks.eventTypes.move,e),this.hooks.trigger(this.hooks.eventTypes.end,e))},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition(),n=e.x,r=e.y;this.transitionTime(),this.translate({x:n,y:r}),this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,{x:n,y:r})}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt),it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),e.prototype.move=function(t,e,n,r){if(!n)return this.translate(e),3===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.move,e),void this.hooks.trigger(this.hooks.eventTypes.end,e);this.animate(t,e,n,r)},e.prototype.animate=function(t,e,n,r){var i=this,o=b(),s=o+n,a=3===this.options.probeType,u=function(){var l=b();if(l>=s)return i.translate(e),a&&i.hooks.trigger(i.hooks.eventTypes.move,e),void i.hooks.trigger(i.hooks.eventTypes.end,e);var c=r(l=(l-o)/n),h={};Object.keys(e).forEach((function(n){var r=t[n],i=e[n];h[n]=(i-r)*c+r})),i.translate(h),a&&i.hooks.trigger(i.hooks.eventTypes.move,h),i.pending&&(i.timer=W(u)),i.pending||(i.callStopWhenPending?i.callStopWhenPending=!1:i.hooks.trigger(i.hooks.eventTypes.end,e))};this.setPending(!0),this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),u()},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition();this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,e)}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt);var ot,st,at,ut,lt=function(){function t(t,e,n){this.wrapper=t,this.options=n,this.hooks=new Q(["beforeComputeBoundary","computeBoundary","momentum","end","ignoreHasScroll"]),this.refresh(e)}return t.prototype.start=function(){this.dist=0,this.setMovingDirection(0),this.setDirection(0)},t.prototype.move=function(t){return t=this.hasScroll?t:0,this.setMovingDirection(t),this.performDampingAlgorithm(t,this.options.outOfBoundaryDampingFactor)},t.prototype.setMovingDirection=function(t){this.movingDirection=t>0?-1:t<0?1:0},t.prototype.setDirection=function(t){this.direction=t>0?-1:t<0?1:0},t.prototype.performDampingAlgorithm=function(t,e){var n=this.currentPos+t;return(n>this.minScrollPos||nthis.minScrollPos&&this.options.bounces[0]||nthis.minScrollPos?this.minScrollPos:this.maxScrollPos),n},t.prototype.end=function(t){var e={duration:0},n=Math.abs(this.currentPos-this.startPos);if(this.options.momentum&&tthis.options.momentumLimitDistance){var r=-1===this.direction&&this.options.bounces[0]||1===this.direction&&this.options.bounces[1]?this.wrapperSize:0;e=this.hasScroll?this.momentum(this.currentPos,this.startPos,t,this.maxScrollPos,this.minScrollPos,r,this.options):{destination:this.currentPos,duration:0}}else this.hooks.trigger(this.hooks.eventTypes.end,e);return e},t.prototype.momentum=function(t,e,n,r,i,o,s){void 0===s&&(s=this.options);var a=t-e,u=Math.abs(a)/n,l=s.deceleration,c=s.swipeBounceTime,h=s.swipeTime,f={destination:t+u*u/l*(a<0?-1:1),duration:Math.min(h,2*u/l),rate:15};return this.hooks.trigger(this.hooks.eventTypes.momentum,f,a),f.destinationi&&(f.destination=o?Math.min(i+o/4,i+o/f.rate*u):i,f.duration=c),f.destination=Math.round(f.destination),f},t.prototype.updateDirection=function(){var t=this.currentPos-this.absStartPos;this.setDirection(t)},t.prototype.refresh=function(t){var e=this.options.rect,n=e.size,r=e.position,i="static"===window.getComputedStyle(this.wrapper,null).position,o=X(this.wrapper);this.wrapperSize=this.wrapper["width"===n?"clientWidth":"clientHeight"],this.setContent(t);var s=X(this.content);this.contentSize=s[n],this.relativeOffset=s[r],i&&(this.relativeOffset-=o[r]),this.computeBoundary(),this.setDirection(0)},t.prototype.setContent=function(t){t!==this.content&&(this.content=t,this.resetState())},t.prototype.resetState=function(){this.currentPos=0,this.startPos=0,this.dist=0,this.setDirection(0),this.setMovingDirection(0),this.resetStartPos()},t.prototype.computeBoundary=function(){this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);var t={minScrollPos:0,maxScrollPos:this.wrapperSize-this.contentSize};t.maxScrollPos<0&&(t.maxScrollPos-=this.relativeOffset,0===this.options.specifiedIndexAsContent&&(t.minScrollPos=-this.relativeOffset)),this.hooks.trigger(this.hooks.eventTypes.computeBoundary,t),this.minScrollPos=t.minScrollPos,this.maxScrollPos=t.maxScrollPos,this.hasScroll=this.options.scrollable&&this.maxScrollPosthis.minScrollPos?t=this.minScrollPos:te+this.directionLockThreshold?this.directionLocked="horizontal":e>=t+this.directionLockThreshold?this.directionLocked="vertical":this.directionLocked="none")},t.prototype.handleEventPassthrough=function(t){var e=ht[this.directionLocked];if(e){if(this.eventPassthrough===e.yes)return ct.yes(t);if(this.eventPassthrough===e.no)return ct.no(t)}return!1},t}(),pt=function(){function t(t,e,n,r,i){this.hooks=new Q(["start","beforeMove","scrollStart","scroll","beforeEnd","end","scrollEnd","contentNotMoved","detectMovingDirection","coordinateTransformation"]),this.scrollBehaviorX=t,this.scrollBehaviorY=e,this.actionsHandler=n,this.animater=r,this.options=i,this.directionLockAction=new ft(i.directionLockThreshold,i.freeScroll,i.eventPassthrough),this.enabled=!0,this.bindActionsHandler()}return t.prototype.bindActionsHandler=function(){var t=this;this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start,(function(e){return!t.enabled||t.handleStart(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move,(function(e){var n=e.deltaX,r=e.deltaY,i=e.e;if(!t.enabled)return!0;var o=function(t,e,n){return 2===n?[e,-t]:3===n?[-t,-e]:4===n?[-e,t]:[t,e]}(n,r,t.options.quadrant),s={deltaX:o[0],deltaY:o[1]};return t.hooks.trigger(t.hooks.eventTypes.coordinateTransformation,s),t.handleMove(s.deltaX,s.deltaY,i)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end,(function(e){return!t.enabled||t.handleEnd(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click,(function(e){t.enabled&&!e._constructed&&t.handleClick(e)}))},t.prototype.handleStart=function(t){var e=b();this.fingerMoved=!1,this.contentMoved=!1,this.startTime=e,this.directionLockAction.reset(),this.scrollBehaviorX.start(),this.scrollBehaviorY.start(),this.animater.doStop(),this.scrollBehaviorX.resetStartPos(),this.scrollBehaviorY.resetStartPos(),this.hooks.trigger(this.hooks.eventTypes.start,t)},t.prototype.handleMove=function(t,e,n){if(!this.hooks.trigger(this.hooks.eventTypes.beforeMove,n)){var r=this.scrollBehaviorX.getAbsDist(t),i=this.scrollBehaviorY.getAbsDist(e),o=b();if(this.checkMomentum(r,i,o))return!0;if(this.directionLockAction.checkMovingDirection(r,i,n))return this.actionsHandler.setInitiated(),!0;var s=this.directionLockAction.adjustDelta(t,e),a=this.scrollBehaviorX.getCurrentPos(),u=this.scrollBehaviorX.move(s.deltaX),l=this.scrollBehaviorY.getCurrentPos(),c=this.scrollBehaviorY.move(s.deltaY);if(!this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)){this.fingerMoved||(this.fingerMoved=!0);var h=u!==a||c!==l;this.contentMoved||h||this.hooks.trigger(this.hooks.eventTypes.contentNotMoved),!this.contentMoved&&h&&(this.contentMoved=!0,this.hooks.trigger(this.hooks.eventTypes.scrollStart)),this.contentMoved&&h&&(this.animater.translate({x:u,y:c}),this.dispatchScroll(o))}}},t.prototype.dispatchScroll=function(t){t-this.startTime>this.options.momentumLimitTime&&(this.startTime=t,this.scrollBehaviorX.updateStartPos(),this.scrollBehaviorY.updateStartPos(),1===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())),this.options.probeType>1&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())},t.prototype.checkMomentum=function(t,e,n){return n-this.endTime>this.options.momentumLimitTime&&e0?Math.ceil(e):Math.floor(e),n=n>0?Math.ceil(n):Math.floor(n),{x:e=x(e,o,i),y:n=x(n,u,a)}},t.prototype.handleClick=function(t){N(t.target,this.options.preventDefaultException)||(B(t),t.stopPropagation())},t.prototype.getCurrentPos=function(){return{x:this.scrollBehaviorX.getCurrentPos(),y:this.scrollBehaviorY.getCurrentPos()}},t.prototype.refresh=function(){this.endTime=0},t.prototype.destroy=function(){this.hooks.destroy()},t}();function gt(t,e,n,r){var i=["momentum","momentumLimitTime","momentumLimitDistance","deceleration","swipeBounceTime","swipeTime","outOfBoundaryDampingFactor","specifiedIndexAsContent"].reduce((function(e,n){return e[n]=t[n],e}),{});return i.scrollable=!!t[e],i.bounces=n,i.rect=r,i}function dt(t,e,n){n.forEach((function(n){var r,i;"string"==typeof n?r=i=n:(r=n.source,i=n.target),t.on(r,(function(){for(var t=[],n=0;n1&&t1||e>1))return!0},t.prototype.momentum=function(t,e){var n={time:0,easing:U.swiper,newX:t.x,newY:t.y},r=this.scrollBehaviorX.end(e),i=this.scrollBehaviorY.end(e);if(n.newX=k(r.destination)?n.newX:r.destination,n.newY=k(i.destination)?n.newY:i.destination,n.time=Math.max(r.duration,i.duration),this.hooks.trigger(this.hooks.eventTypes.momentum,n,this),n.newX!==t.x||n.newY!==t.y)return(n.newX>this.scrollBehaviorX.minScrollPos||n.newXthis.scrollBehaviorY.minScrollPos||n.newY=4)}}();if(wt){try{var xt={};Object.defineProperty(xt,"passive",{get:function(){!0}}),window.addEventListener("test-passive",(function(){}),xt)}catch(t){}}var Pt=function(t,e){for(var n in e)t[n]=e[n];return t};function Ct(t,e,n){return tn?n:t}var Tt=wt&&document.createElement("div").style,St=function(){if(!wt)return!1;for(var t=0,e=[{key:"standard",value:"transform"},{key:"webkit",value:"webkitTransform"},{key:"Moz",value:"MozTransform"},{key:"O",value:"OTransform"},{key:"ms",value:"msTransform"}];t=this.pages[n][0].cx);n++);for(i=this.pages[n]?this.pages[n].length:0;r=this.pages[0][r].cy);r++);return{pageX:n,pageY:r}},t.prototype.buildPagesMatrix=function(t,e){var n,r,i,o,s=[],a=0,u=0,l=this.scroll.scroller.scrollBehaviorX.maxScrollPos,c=this.scroll.scroller.scrollBehaviorY.maxScrollPos;for(r=Math.round(t/2),i=Math.round(e/2);a>-this.scrollerWidth;){for(s[u]=[],o=0,n=0;n>-this.scrollerHeight;)s[u][o]={x:Math.max(a,l),y:Math.max(n,c),width:t,height:e,cx:a-r,cy:n-i},n-=e,o++;a-=t,u++}return s},t}(),Et=function(){function t(t,e){this.scroll=t,this.slideOptions=e,this.slideX=!1,this.slideY=!1,this.currentPage=Pt({},Bt)}return t.prototype.refresh=function(){this.pagesMatrix=new Ot(this.scroll),this.checkSlideLoop(),this.currentPage=this.getAdjustedCurrentPage()},t.prototype.getAdjustedCurrentPage=function(){var t=this.currentPage,e=t.pageX,n=t.pageY;e=Math.min(e,this.pagesMatrix.pageLengthOfX-1),n=Math.min(n,this.pagesMatrix.pageLengthOfY-1),this.loopX&&(e=Math.min(e,this.pagesMatrix.pageLengthOfX-2)),this.loopY&&(n=Math.min(n,this.pagesMatrix.pageLengthOfY-2));var r=this.pagesMatrix.getPageStats(e,n);return{pageX:e,pageY:n,x:r.x,y:r.y}},t.prototype.setCurrentPage=function(t){this.currentPage=t},t.prototype.getInternalPage=function(t,e){t>=this.pagesMatrix.pageLengthOfX?t=this.pagesMatrix.pageLengthOfX-1:t<0&&(t=0),e>=this.pagesMatrix.pageLengthOfY?e=this.pagesMatrix.pageLengthOfY-1:e<0&&(e=0);var n=this.pagesMatrix.getPageStats(t,e);return{pageX:t,pageY:e,x:n.x,y:n.y}},t.prototype.getInitialPage=function(t,e){void 0===t&&(t=!1),void 0===e&&(e=!1);var n=this.slideOptions,r=n.startPageXIndex,i=n.startPageYIndex,o=this.loopX?1:0,s=this.loopY?1:0,a=t?o:this.currentPage.pageX,u=t?s:this.currentPage.pageY;e?(a=this.loopX?r+1:r,u=this.loopY?i+1:i):(a=t?o:this.currentPage.pageX,u=t?s:this.currentPage.pageY);var l=this.pagesMatrix.getPageStats(a,u);return{pageX:a,pageY:u,x:l.x,y:l.y}},t.prototype.getExposedPage=function(t){var e=Pt({},t);return this.loopX&&(e.pageX=this.fixedPage(e.pageX,this.pagesMatrix.pageLengthOfX-2)),this.loopY&&(e.pageY=this.fixedPage(e.pageY,this.pagesMatrix.pageLengthOfY-2)),e},t.prototype.getExposedPageByPageIndex=function(t,e){var n={pageX:t,pageY:e};this.loopX&&(n.pageX=t+1),this.loopY&&(n.pageY=e+1);var r=this.pagesMatrix.getPageStats(n.pageX,n.pageY);return{x:r.x,y:r.y,pageX:t,pageY:e}},t.prototype.getWillChangedPage=function(t){return t=Pt({},t),this.loopX&&(t.pageX=this.fixedPage(t.pageX,this.pagesMatrix.pageLengthOfX-2),t.x=this.pagesMatrix.getPageStats(t.pageX+1,0).x),this.loopY&&(t.pageY=this.fixedPage(t.pageY,this.pagesMatrix.pageLengthOfY-2),t.y=this.pagesMatrix.getPageStats(0,t.pageY+1).y),t},t.prototype.fixedPage=function(t,e){for(var n=[],r=0;r1?this.slideX=!0:this.slideX=!1,this.pagesMatrix.pages[0]&&this.pagesMatrix.pageLengthOfY>1?this.slideY=!0:this.slideY=!1,this.loopX=this.wannaLoop&&this.slideX,this.loopY=this.wannaLoop&&this.slideY,this.slideX&&this.slideY&&bt("slide does not support two direction at the same time.")},t}(),It=[{key:"next",name:"next"},{key:"prev",name:"prev"},{key:"goToPage",name:"goToPage"},{key:"getCurrentPage",name:"getCurrentPage"},{key:"startPlay",name:"startPlay"},{key:"pausePlay",name:"pausePlay"}].map((function(t){return{key:t.key,sourceKey:"plugins.slide."+t.name}})),Dt=function(){function t(t){this.scroll=t,this.cachedClonedPageDOM=[],this.resetLooping=!1,this.autoplayTimer=0,this.satisfyInitialization()&&this.init()}return t.prototype.satisfyInitialization=function(){return!(this.scroll.scroller.content.children.length<=0)||(bt("slide need at least one slide page to be initialised.please check your DOM layout."),!1)},t.prototype.init=function(){this.willChangeToPage=Pt({},Bt),this.handleBScroll(),this.handleOptions(),this.handleHooks(),this.createPages()},t.prototype.createPages=function(){this.pages=new Et(this.scroll,this.options)},t.prototype.handleBScroll=function(){this.scroll.registerType(["slideWillChange","slidePageChanged"]),this.scroll.proxy(It)},t.prototype.handleOptions=function(){var t=!0===this.scroll.options.slide?{}:this.scroll.options.slide,e={loop:!0,threshold:.1,speed:400,easing:At.bounce,listenFlick:!0,autoplay:!0,interval:3e3,startPageXIndex:0,startPageYIndex:0};this.options=Pt(e,t)},t.prototype.handleLoop=function(t){var e=this.options.loop,n=this.scroll.scroller.content,r=n.children.length;e&&(n!==t?(this.resetLoopChangedStatus(),this.removeClonedSlidePage(t),r>1&&this.cloneFirstAndLastSlidePage(n)):3===r&&this.initialised?(this.removeClonedSlidePage(n),this.moreToOnePageInLoop=!0,this.oneToMorePagesInLoop=!1):r>1?(this.initialised&&0===this.cachedClonedPageDOM.length?(this.oneToMorePagesInLoop=!0,this.moreToOnePageInLoop=!1):(this.removeClonedSlidePage(n),this.resetLoopChangedStatus()),this.cloneFirstAndLastSlidePage(n)):this.resetLoopChangedStatus())},t.prototype.resetLoopChangedStatus=function(){this.moreToOnePageInLoop=!1,this.oneToMorePagesInLoop=!1},t.prototype.handleHooks=function(){var t=this,e=this.scroll.hooks,n=this.scroll.scroller.hooks,r=this.options.listenFlick;this.prevContent=this.scroll.scroller.content,this.hooksFn=[],this.registerHooks(this.scroll,this.scroll.eventTypes.beforeScrollStart,this.pausePlay),this.registerHooks(this.scroll,this.scroll.eventTypes.scrollEnd,this.modifyCurrentPage),this.registerHooks(this.scroll,this.scroll.eventTypes.scrollEnd,this.startPlay),this.scroll.eventTypes.mousewheelMove&&(this.registerHooks(this.scroll,this.scroll.eventTypes.mousewheelMove,(function(){return!0})),this.registerHooks(this.scroll,this.scroll.eventTypes.mousewheelEnd,(function(e){1!==e.directionX&&1!==e.directionY||t.next(),-1!==e.directionX&&-1!==e.directionY||t.prev()}))),this.registerHooks(e,e.eventTypes.refresh,this.refreshHandler),this.registerHooks(e,e.eventTypes.destroy,this.destroy),this.registerHooks(n,n.eventTypes.beforeRefresh,(function(){t.handleLoop(t.prevContent),t.setSlideInlineStyle()})),this.registerHooks(n,n.eventTypes.momentum,this.modifyScrollMetaHandler),this.registerHooks(n,n.eventTypes.scroll,this.scrollHandler),this.registerHooks(n,n.eventTypes.checkClick,this.startPlay),r&&this.registerHooks(n,n.eventTypes.flick,this.flickHandler)},t.prototype.startPlay=function(){var t=this,e=this.options,n=e.interval;e.autoplay&&(clearTimeout(this.autoplayTimer),this.autoplayTimer=window.setTimeout((function(){t.next()}),n))},t.prototype.pausePlay=function(){this.options.autoplay&&clearTimeout(this.autoplayTimer)},t.prototype.setSlideInlineStyle=function(){var t=this.scroll.scroller,e=t.content,n=t.wrapper,r=this.scroll.options;[{direction:"scrollX",sizeType:"offsetWidth",styleType:"width"},{direction:"scrollY",sizeType:"offsetHeight",styleType:"height"}].forEach((function(t){var i=t.direction,o=t.sizeType,s=t.styleType;if(r[i]){for(var a=n[o],u=e.children,l=u.length,c=0;c({sortPosts:[],postListOffsetTop:0}),created(){this.setPosts()},mounted(){},watch:{currentPage(){this.$route.query.p!=this.currentPage&&this.$router.push({query:{...this.$route.query,p:this.currentPage}}),this.setPosts()},category(){this.setPosts()},tag(){this.setPosts()}},methods:{setPosts(){const t=this.currentPage,e=this.perPage;let n=[];n=this.category?this.$groupPosts.categories[this.category]:this.tag?this.$groupPosts.tags[this.tag]:this.$sortPosts,this.sortPosts=n.slice((t-1)*e,t*e)}}}),Yt=(n(326),Object(o.a)(jt,(function(){var t=this,e=t._self._c;return e("div",{ref:"postList",staticClass:"post-list"},[e("transition-group",{attrs:{tag:"div",name:"post"}},t._l(t.sortPosts,(function(n){return e("div",{key:n.key,staticClass:"post card-box",class:n.frontmatter.sticky&&"iconfont icon-zhiding"},[e("div",{staticClass:"title-wrapper"},[e("h2",[e("router-link",{attrs:{to:n.path}},[t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v(t._s(n.frontmatter.titleTag))]):t._e()])],1),t._v(" "),e("div",{staticClass:"article-info"},[n.author&&n.author.href?e("a",{staticClass:"iconfont icon-touxiang",attrs:{title:"作者",target:"_blank",href:n.author.href}},[t._v(t._s(n.author.name?n.author.name:n.author))]):n.author?e("span",{staticClass:"iconfont icon-touxiang",attrs:{title:"作者"}},[t._v(t._s(n.author.name?n.author.name:n.author))]):t._e(),t._v(" "),n.frontmatter.date?e("span",{staticClass:"iconfont icon-riqi",attrs:{title:"创建时间"}},[t._v(t._s(n.frontmatter.date.split(" ")[0]))]):t._e(),t._v(" "),!1!==t.$themeConfig.category&&n.frontmatter.categories?e("span",{staticClass:"iconfont icon-wenjian",attrs:{title:"分类"}},t._l(n.frontmatter.categories,(function(n,r){return e("router-link",{key:r,attrs:{to:"/categories/?category="+encodeURIComponent(n)}},[t._v(t._s(n))])})),1):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&n.frontmatter.tags&&n.frontmatter.tags[0]?e("span",{staticClass:"iconfont icon-biaoqian tags",attrs:{title:"标签"}},t._l(n.frontmatter.tags,(function(n,r){return e("router-link",{key:r,attrs:{to:"/tags/?tag="+encodeURIComponent(n)}},[t._v(t._s(n))])})),1):t._e()])]),t._v(" "),n.excerpt?e("div",{staticClass:"excerpt-wrapper"},[e("div",{staticClass:"excerpt",domProps:{innerHTML:t._s(n.excerpt)}}),t._v(" "),e("router-link",{staticClass:"readmore iconfont icon-jiantou-you",attrs:{to:n.path}},[t._v("阅读全文")])],1):t._e()])})),0)],1)}),[],!1,null,null,null).exports),Xt=(n(15),{name:"UpdateArticle",props:{length:{type:[String,Number],default:3},moreArticle:String},data:()=>({posts:[],currentPath:""}),created(){this.posts=this.$site.pages,this.currentPath=this.$page.path},computed:{topPublishPosts(){return this.$sortPostsByDate?this.$sortPostsByDate.filter(t=>{const{path:e}=t;return e!==this.currentPath}).slice(0,this.length):[]},isShowArticle(){const{frontmatter:t}=this.$page;return!(!1!==t.article)}},methods:{getNum:t=>t<9?"0"+(t+1):t+1,getDate:t=>t.frontmatter.date?t.frontmatter.date.split(" ")[0].slice(5,10):""},watch:{$route(){this.currentPath=this.$page.path}}}),Nt=(n(327),Object(o.a)(Xt,(function(){var t=this,e=t._self._c;return e("div",{class:["article-list",{"no-article-list":t.isShowArticle}]},[e("div",{staticClass:"article-title"},[e("router-link",{staticClass:"iconfont icon-bi",attrs:{to:t.moreArticle||"/archives/"}},[t._v("最近更新")])],1),t._v(" "),e("div",{staticClass:"article-wrapper"},[t._l(t.topPublishPosts,(function(n,r){return e("dl",{key:r},[e("dd",[t._v(t._s(t.getNum(r)))]),t._v(" "),e("dt",[e("router-link",{attrs:{to:n.path}},[e("div",[t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v("\n "+t._s(n.frontmatter.titleTag)+"\n ")]):t._e()])]),t._v(" "),e("span",{staticClass:"date"},[t._v(t._s(t.getDate(n)))])],1)])})),t._v(" "),e("dl",[e("dd"),t._v(" "),e("dt",[e("router-link",{staticClass:"more",attrs:{to:t.moreArticle||"/archives/"}},[t._v("更多文章>")])],1)])],2)])}),[],!1,null,null,null).exports),Rt={props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},computed:{pages(){return Math.ceil(this.total/this.perPage)}},methods:{threeNum(){let t=3;const e=this.currentPage,n=this.pages;return t=e<3?3:e>n-3?n-2:e,t},goPrex(){let t=this.currentPage;t>1&&this.handleEmit(--t)},goNext(){let t=this.currentPage;t3,expression:"currentPage > 3"}],staticClass:"ellipsis ell-two",attrs:{title:"上两页"},on:{click:function(e){return t.goIndex(t.currentPage-2)}}}),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage<=3,expression:"currentPage <= 3"}],staticClass:"card-box",class:{active:2===t.currentPage},on:{click:function(e){return t.goIndex(2)}}},[t._v("2")]),t._v(" "),e("span",{staticClass:"card-box",class:{active:t.currentPage>=3&&t.currentPage<=t.pages-2},on:{click:function(e){t.goIndex(t.threeNum())}}},[t._v(t._s(t.threeNum()))]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage=t.pages-2,expression:"currentPage >= pages - 2"}],staticClass:"card-box",class:{active:t.currentPage===t.pages-1},on:{click:function(e){return t.goIndex(t.pages-1)}}},[t._v(t._s(t.pages-1))]),t._v(" "),e("span",{staticClass:"card-box",class:{active:t.currentPage===t.pages},on:{click:function(e){return t.goIndex(t.pages)}}},[t._v(t._s(t.pages))])]),t._v(" "),e("span",{staticClass:"card-box next iconfont icon-jiantou-you",class:{disabled:t.currentPage===t.pages},on:{click:function(e){return t.goNext()}}},[e("p",[t._v("下一页")])])])}),[],!1,null,null,null).exports),Ut={computed:{blogger(){return this.$themeConfig.blogger},social(){return this.$themeConfig.social}}},Ht=(n(329),Object(o.a)(Ut,(function(){var t=this,e=t._self._c;return e("aside",{staticClass:"blogger-wrapper card-box"},[e("div",{staticClass:"avatar"},[e("img",{attrs:{src:t.blogger.avatar,alt:"头像",title:"我好看吗"}})]),t._v(" "),t.social&&t.social.icons&&t.social.icons.length?e("div",{staticClass:"icons"},t._l(t.social.icons,(function(n,r){return e("a",{key:r,class:["iconfont",n.iconClass],style:{width:100/t.social.icons.length+"%"},attrs:{href:n.link,title:n.title,target:"_blank"}})})),0):t._e(),t._v(" "),e("div",{staticClass:"blogger"},[e("span",{staticClass:"name"},[t._v(t._s(t.blogger.name))]),t._v(" "),e("span",{staticClass:"slogan"},[t._v(t._s(t.blogger.slogan))])])])}),[],!1,null,null,null).exports),Ft={props:{category:{type:String,default:""},categoriesData:{type:Array,default:[]},length:{type:[String,Number],default:"all"}},computed:{categories(){return"all"===this.length?this.categoriesData:this.categoriesData.slice(0,this.length)}}},Wt=(n(330),Object(o.a)(Ft,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"categories-wrapper card-box"},[e("router-link",{staticClass:"title iconfont icon-wenjianjia",attrs:{to:"/categories/",title:"全部分类"}},[t._v(t._s("all"===t.length?"全部分类":"文章分类"))]),t._v(" "),e("div",{staticClass:"categories"},[t._l(t.categories,(function(n,r){return e("router-link",{key:r,class:{active:n.key===t.category},attrs:{to:"/categories/?category="+encodeURIComponent(n.key)}},[t._v("\n "+t._s(n.key)+"\n "),e("span",[t._v(t._s(n.length))])])})),t._v(" "),"all"!==t.length&&t.length({tagBgColor:["#11a8cd","#F8B26A","#67CC86","#E15B64","#F47E60","#849B87"],tagStyleList:[]}),created(){for(let t=0,e=this.tags.length;tt.length?e("router-link",{attrs:{to:"/tags/"}},[t._v("更多...")]):t._e()],2)],1)}),[],!1,null,null,null).exports);_t.use(Dt);var Kt={data:()=>({isMQMobile:!1,slide:null,currentPageIndex:0,playTimer:0,mark:0,total:0,perPage:10,currentPage:1}),computed:{homeData(){return{...this.$page.frontmatter}},hasFeatures(){return!(!this.homeData.features||!this.homeData.features.length)},homeSidebarB(){const{htmlModules:t}=this.$themeConfig;return t?t.homeSidebarB:""},showBanner(){return!(this.$route.query.p&&1!=this.$route.query.p&&(!this.homeData.postList||"detailed"===this.homeData.postList))},bannerBgStyle(){let t=this.homeData.bannerBg;return t&&"auto"!==t?"none"===t?this.$themeConfig.bodyBgImg?"":"background: var(--mainBg);color: var(--textColor)":t.indexOf("background:")>-1?t:t.indexOf(".")>-1?`background: url(${this.$withBase(t)}) center center / cover no-repeat`:void 0:this.$themeConfig.bodyBgImg?"":"background: rgb(40,40,45) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABOSURBVFhH7c6xCQAgDAVRR9A6E4hLu4uLiWJ7tSnuQcIvr2TRYsw3/zOGGEOMIcYQY4gxxBhiDDGGGEOMIcYQY4gxxBhiDLkx52W4Gn1tuslCtHJvL54AAAAASUVORK5CYII=)"},actionLink(){return{link:this.homeData.actionLink,text:this.homeData.actionText}}},components:{NavLink:s,MainLayout:$t,PostList:Yt,UpdateArticle:Nt,BloggerBar:Ht,CategoriesBar:Wt,TagsBar:Gt,Pagination:zt},created(){this.total=this.$sortPosts.length},beforeMount(){this.isMQMobile=window.innerWidth<720},mounted(){this.$route.query.p&&(this.currentPage=Number(this.$route.query.p)),!this.hasFeatures||!this.isMQMobile||this.$route.query.p&&1!=this.$route.query.p||this.init(),this.hasFeatures&&window.addEventListener("resize",()=>{this.isMQMobile=window.innerWidth<720,!this.isMQMobile||this.slide||this.mark||(this.mark++,setTimeout(()=>{this.init()},60))})},beforeDestroy(){clearTimeout(this.playTimer),this.slide&&this.slide.destroy()},watch:{"$route.query.p"(){this.$route.query.p?this.currentPage=Number(this.$route.query.p):this.currentPage=1,this.hasFeatures&&1===this.currentPage&&this.isMQMobile&&setTimeout(()=>{this.slide&&this.slide.destroy(),this.init()},0)}},methods:{init(){clearTimeout(this.playTimer),this.slide=new _t(this.$refs.slide,{scrollX:!0,scrollY:!1,slide:{loop:!0,threshold:100},useTransition:!0,momentum:!1,bounce:!1,stopPropagation:!1,probeType:2,preventDefault:!1}),this.slide.on("beforeScrollStart",()=>{clearTimeout(this.playTimer)}),this.slide.on("scrollEnd",()=>{this.autoGoNext()}),this.slide.on("slideWillChange",t=>{this.currentPageIndex=t.pageX}),this.autoGoNext()},autoGoNext(){clearTimeout(this.playTimer),this.playTimer=setTimeout(()=>{this.slide.next()},4e3)},handlePagination(t){this.currentPage=t},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop}},Qt=(n(332),Object(o.a)(Kt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home-wrapper"},[e("div",{staticClass:"banner",class:{"hide-banner":!t.showBanner},style:t.bannerBgStyle},[e("div",{staticClass:"banner-conent",style:!t.homeData.features&&!t.homeData.heroImage&&"padding-top: 7rem"},[e("header",{staticClass:"hero"},[t.homeData.heroImage?e("img",{attrs:{src:t.$withBase(t.homeData.heroImage),alt:t.homeData.heroAlt}}):t._e(),t._v(" "),t.homeData.heroText?e("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.homeData.heroText)+"\n ")]):t._e(),t._v(" "),t.homeData.tagline?e("p",{staticClass:"description"},[t._v("\n "+t._s(t.homeData.tagline)+"\n ")]):t._e(),t._v(" "),t.homeData.actionText&&t.homeData.actionLink?e("p",{staticClass:"action"},[e("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.hasFeatures&&!t.isMQMobile?e("div",{staticClass:"features"},t._l(t.homeData.features,(function(n,r){return e("div",{key:r,staticClass:"feature"},[n.link?e("router-link",{attrs:{to:n.link}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])]):e("a",{attrs:{href:"javascript:;"}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])])],1)})),0):t._e()]),t._v(" "),t.hasFeatures?e("div",{directives:[{name:"show",rawName:"v-show",value:t.isMQMobile,expression:"isMQMobile"}],staticClass:"slide-banner"},[e("div",{staticClass:"banner-wrapper"},[e("div",{ref:"slide",staticClass:"slide-banner-scroll"},[e("div",{staticClass:"slide-banner-wrapper"},t._l(t.homeData.features,(function(n,r){return e("div",{key:r,staticClass:"slide-item"},[n.link?e("router-link",{attrs:{to:n.link}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])]):e("a",{attrs:{href:"javascript:;"}},[n.imgUrl?e("img",{staticClass:"feature-img",attrs:{src:t.$withBase(n.imgUrl),alt:n.title}}):t._e(),t._v(" "),e("h2",[t._v(t._s(n.title))]),t._v(" "),e("p",[t._v(t._s(n.details))])])],1)})),0)]),t._v(" "),e("div",{staticClass:"docs-wrapper"},t._l(t.homeData.features.length,(function(n,r){return e("span",{key:r,staticClass:"doc",class:{active:t.currentPageIndex===r}})})),0)])]):t._e()]),t._v(" "),e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return["simple"===t.homeData.postList?e("UpdateArticle",{staticClass:"card-box",attrs:{length:t.homeData.simplePostListLength||10,moreArticle:t.$themeConfig.updateBar&&t.$themeConfig.updateBar.moreArticle}}):t.homeData.postList&&"detailed"!==t.homeData.postList?t._e():[e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})],t._v(" "),e("Content",{staticClass:"theme-vdoing-content custom card-box"})]},proxy:!0},t.homeData.hideRightBar?null:{key:"mainRight",fn:function(){return[t.$themeConfig.blogger?e("BloggerBar"):t._e(),t._v(" "),!1!==t.$themeConfig.category&&t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,length:10}}):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,length:30}}):t._e(),t._v(" "),t.homeSidebarB?e("div",{staticClass:"custom-html-box card-box",domProps:{innerHTML:t._s(t.homeSidebarB)}}):t._e()]},proxy:!0}],null,!0)})],1)}),[],!1,null,"7d2bb426",null).exports),Jt=(n(21),n(333),n(334),n(335),n(336),n(339),n(295),n(342)),Zt=n.n(Jt),Vt=n(296),te=n.n(Vt);let ee=null,ne=null,re=null,ie=null;const oe=/[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\u3041-\u3096]|[\u30A1-\u30FA]/giu;var se={buildIndex(t,e){const n=t.filter(t=>!t.frontmatter||!1!==t.frontmatter.search),r={encode:e.encode||"simple",tokenize:e.tokenize||"forward",split:e.split||/\W+/,async:!0,doc:{id:"key",field:["title","headersStr","content"]}};ee=new Zt.a(r),ee.add(n);const i=n.filter(t=>t.charsets.cyrillic),o=n.filter(t=>t.charsets.cjk);i.length&&(ne=new Zt.a({...r,encode:"icase",split:/\s+/,tokenize:"forward"}),ne.add(i)),o.length&&(re=new Zt.a({...r,encode:!1,tokenize:function(t){const e=[];let n=null;do{n=oe.exec(t),n&&e.push(n[0])}while(n);return e}}),re.add(o)),ie=te.a.keyBy(n,"path")},async match(t,e,n=7){const r=[{field:"title",query:t,limit:n,boost:10},{field:"headersStr",query:t,limit:n,boost:7},{field:"content",query:t,limit:n}],i=await ee.search(r),o=ne?await ne.search(r):[],s=re?await re.search(r):[],a=te.a.uniqBy([...i,...o,...s],"path").map(n=>({...n,parentPageTitle:ae(n),...ue(n,pe(t),e)})),u=te.a.groupBy(a,"parentPageTitle");return te.a.values(u).map(t=>t.map((t,e)=>0===e?t:{...t,parentPageTitle:null})).flat()},normalizeString:pe};function ae(t){const e=t.path.split("/");let n="/";e[1]&&(n=`/${e[1]}/`);return(ie[n]||t).title}function ue(t,e,n){const r=function(t,e,n){const r=n.map(e=>ce(t,e)||he(t,e)).filter(t=>t);if(0===r.length)return null;if(r.every(t=>null!=t.headerIndex))return ce(t,e)||r[0];return he(t,e)||r.find(t=>null==t.headerIndex)}(t,e.toLowerCase(),n);if(!r)return{...le(t),slug:"",contentStr:null};if(null!=r.headerIndex)return{...le(t,r.headerIndex,r),slug:"#"+t.headers[r.headerIndex].slug,contentStr:null};let i=te.a.findLastIndex(t.headers||[],t=>null!=t.charIndex&&t.charIndext.level===n.level-1,e-1))&&(e=null)}const i=r.map(t=>t.title).join(" > "),o=r.slice(0,-1),s=te.a.sum(o.map(t=>(t.title||"").length))+3*o.length;return{headingStr:i,headingHighlight:n&&null!=n.headerIndex&&[n.charIndex+s,n.termLength]}}function ce(t,e){if(!t.headers)return null;for(let n=0;n=s.length)return{contentStr:s,contentHighlight:u};const l=te.a.round((120-r)/2),c=Math.max(a-l,0),h=Math.min(c+120,s.length);let f=s.slice(c,h);return u[0]=u[0]-c,c>0&&(f="..."+f,u[0]=u[0]+3),h({query:"",focused:!1,focusIndex:0,placeholder:void 0,suggestions:null}),computed:{queryTerms(){if(!this.query)return[];return se.normalizeString(this.query).split(/[^\p{L}\p{N}_]+/iu).filter(t=>t)},showSuggestions(){return this.focused&&this.suggestions&&this.suggestions.length},alignRight(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},watch:{query(){this.getSuggestions()}},mounted(){se.buildIndex(this.$site.pages,{}||{}),this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey);const t=this.urlParams();if(t){const e=t.get("query");e&&(this.query=decodeURI(e),this.focused=!0)}},beforeDestroy(){document.removeEventListener("keydown",this.onHotkey)},methods:{async getSuggestions(){if(!this.query||!this.queryTerms.length)return void(this.suggestions=[]);let t=await se.match(this.query,this.queryTerms,this.$site.themeConfig.searchMaxSuggestions||5);ge.processSuggestions&&(t=await ge.processSuggestions(t,this.query,this.queryTerms)),this.suggestions=t.map(t=>({...t,headingDisplay:de(t.headingStr,t.headingHighlight),contentDisplay:de(t.contentStr,t.contentHighlight)}))},getPageLocalePath(t){for(const e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable(t){let e=null;return null===e||(e=Array.isArray(e)?e:new Array(e),e.filter(e=>t.path.match(e)).length>0)},onHotkey(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown(){this.showSuggestions&&(this.focusIndexwindow.location.search?new URLSearchParams(window.location.search):null}},me=(n(343),Object(o.a)(ve,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"search-box"},[e("input",{ref:"input",class:{focused:t.focused},attrs:{"aria-label":"Search",placeholder:t.placeholder,autocomplete:"off",spellcheck:"false"},domProps:{value:t.query},on:{input:function(e){t.query=e.target.value},focus:function(e){t.focused=!0},blur:function(e){t.focused=!1},keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.go(t.focusIndex)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:t.onUp.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:t.onDown.apply(null,arguments)}]}}),t._v(" "),t.showSuggestions?e("ul",{staticClass:"suggestions",class:{"align-right":t.alignRight},on:{mouseleave:t.unfocus}},t._l(t.suggestions,(function(n,r){return e("li",{key:r,staticClass:"suggestion",class:{focused:r===t.focusIndex},on:{mousedown:function(e){return t.go(r)},mouseenter:function(e){return t.focus(r)}}},[e("a",{attrs:{href:n.path+n.slug},on:{click:function(t){t.preventDefault()}}},[n.parentPageTitle?e("div",{staticClass:"parent-page-title",domProps:{innerHTML:t._s(n.parentPageTitle)}}):t._e(),t._v(" "),e("div",{staticClass:"suggestion-row"},[e("div",{staticClass:"page-title"},[t._v(t._s(n.title||n.path))]),t._v(" "),e("div",{staticClass:"suggestion-content"},[n.headingStr?e("div",{staticClass:"header"},[t._v("\n "+t._s(n.headingDisplay.prefix)),e("span",{staticClass:"highlight"},[t._v(t._s(n.headingDisplay.highlightedContent))]),t._v(t._s(n.headingDisplay.suffix)+"\n ")]):t._e(),t._v(" "),n.contentStr?e("div",[t._v("\n "+t._s(n.contentDisplay.prefix)),e("span",{staticClass:"highlight"},[t._v(t._s(n.contentDisplay.highlightedContent))]),t._v(t._s(n.contentDisplay.suffix)+"\n ")]):t._e()])])])])})),0):t._e()])}),[],!1,null,null,null).exports),ye=(n(344),Object(o.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sidebar-button",attrs:{title:"目录"},on:{click:function(e){return t.$emit("toggle-sidebar")}}},[e("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[e("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),_e=n(323),be=n(125),we=n.n(be),ke={components:{NavLink:s,DropdownTransition:_e.a},data:()=>({open:!1,isMQMobile:!1}),props:{item:{required:!0}},computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text}},beforeMount(){this.isMQMobile=window.innerWidth<720,window.addEventListener("resize",()=>{this.isMQMobile=window.innerWidth<720})},methods:{toggle(){this.isMQMobile&&(this.open=!this.open)},isLastItemOfArray:(t,e)=>we()(e)===t},watch:{$route(){this.open=!1}}},xe=(n(346),{components:{NavLink:s,DropdownLink:Object(o.a)(ke,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[e("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.toggle}},[t.item.link?e("router-link",{staticClass:"link-title",attrs:{to:t.item.link}},[t._v(t._s(t.item.text))]):t._e(),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:!t.item.link,expression:"!item.link"}],staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow",class:t.open?"down":"right"})],1),t._v(" "),e("DropdownTransition",[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(n,r){return e("li",{key:n.link||r,staticClass:"dropdown-item"},["links"===n.type?e("h4",[t._v(t._s(n.text))]):t._e(),t._v(" "),"links"===n.type?e("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(n.items,(function(r){return e("li",{key:r.link,staticClass:"dropdown-subitem"},[e("NavLink",{attrs:{item:r},on:{focusout:function(e){t.isLastItemOfArray(r,n.items)&&t.isLastItemOfArray(n,t.item.items)&&t.toggle()}}})],1)})),0):e("NavLink",{attrs:{item:n},on:{focusout:function(e){t.isLastItemOfArray(n,t.item.items)&&t.toggle()}}})],1)})),0)])],1)}),[],!1,null,null,null).exports},computed:{userNav(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav(){const{locales:t}=this.$site;if(t&&Object.keys(t).length>1){const e=this.$page.path,n=this.$router.options.routes,r=this.$site.themeConfig.locales||{},i={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(t).map(i=>{const o=t[i],s=r[i]&&r[i].label||o.lang;let a;return o.lang===this.$lang?a=e:(a=e.replace(this.$localeConfig.path,i),n.some(t=>t.path===a)||(a=i)),{text:s,link:a}})};return[...this.userNav,i]}return this.userNav},userLinks(){return(this.nav||[]).map(t=>Object.assign(Object(r.k)(t),{items:(t.items||[]).map(r.k)}))},repoLink(){const{repo:t}=this.$site.themeConfig;return t?/^https?:/.test(t)?t:"https://github.com/"+t:null},repoLabel(){if(!this.repoLink)return;if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;const t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"];for(let n=0;n({linksWrapMaxWidth:null}),mounted(){const t=parseInt(Ce(this.$el,"paddingLeft"))+parseInt(Ce(this.$el,"paddingRight")),e=()=>{document.documentElement.clientWidth<719?this.linksWrapMaxWidth=null:this.linksWrapMaxWidth=this.$el.offsetWidth-t-(this.$refs.siteName&&this.$refs.siteName.offsetWidth||0)};e(),window.addEventListener("resize",e,!1)},computed:{algolia(){return this.$themeLocaleConfig.algolia||this.$site.themeConfig.algolia||{}},isAlgoliaSearch(){return this.algolia&&this.algolia.apiKey&&this.algolia.indexName}}},Se=(n(348),Object(o.a)(Te,(function(){var t=this,e=t._self._c;return e("header",{staticClass:"navbar blur"},[e("SidebarButton",{on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),e("router-link",{staticClass:"home-link",attrs:{to:t.$localePath}},[t.$site.themeConfig.logo?e("img",{staticClass:"logo",attrs:{src:t.$withBase(t.$site.themeConfig.logo),alt:t.$siteTitle}}):t._e(),t._v(" "),t.$siteTitle?e("span",{ref:"siteName",staticClass:"site-name",class:{"can-hide":t.$site.themeConfig.logo}},[t._v(t._s(t.$siteTitle))]):t._e()]),t._v(" "),e("div",{staticClass:"links",style:t.linksWrapMaxWidth?{"max-width":t.linksWrapMaxWidth+"px"}:{}},[t.isAlgoliaSearch?e("AlgoliaSearchBox",{attrs:{options:t.algolia}}):!1!==t.$site.themeConfig.search&&!1!==t.$page.frontmatter.search?e("SearchBox"):t._e(),t._v(" "),e("NavLinks",{staticClass:"can-hide"})],1)],1)}),[],!1,null,null,null).exports),Le=n(303),Ae=n.n(Le),Be={name:"PageEdit",computed:{tags(){return this.$frontmatter.tags},lastUpdated(){return this.$page.lastUpdated},lastUpdatedText(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink(){const t=Ae()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,{repo:e,docsDir:n="",docsBranch:r="master",docsRepo:i=e}=this.$site.themeConfig;return t&&i&&this.$page.relativePath?this.createEditLink(e,i,n,r,this.$page.relativePath):null},editLinkText(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink(t,e,n,i,o){if(/bitbucket.org/.test(e)){return e.replace(r.b,"")+"/src"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o+`?mode=edit&spa=0&at=${i}&fileviewer=file-view-default`}if(/gitlab.com/.test(e)){return e.replace(r.b,"")+"/-/edit"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o}const s=/gitee.com/;if(s.test(e)){return e.replace(s,"gitee.com/-/ide/project")+"/edit"+`/${i}/-/`+(n?n.replace(r.b,"")+"/":"")+o}return(r.j.test(e)?e:"https://github.com/"+e).replace(r.b,"")+"/edit"+`/${i}/`+(n?n.replace(r.b,"")+"/":"")+o}}},Me=(n(349),Object(o.a)(Be,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"page-edit"},[t.editLink?e("div",{staticClass:"edit-link"},[e("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),e("OutboundLink")],1):t._e(),t._v(" "),!1!==t.$themeConfig.tag&&t.tags&&t.tags[0]?e("div",{staticClass:"tags"},t._l(t.tags,(function(n,r){return e("router-link",{key:r,attrs:{to:"/tags/?tag="+encodeURIComponent(n),title:"标签"}},[t._v("#"+t._s(n))])})),1):t._e(),t._v(" "),t.lastUpdated?e("div",{staticClass:"last-updated"},[e("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),e("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null).exports),Oe=n(350),Ee=n.n(Oe),Ie={name:"PageNav",props:["sidebarItems"],computed:{prev(){return $e(De.PREV,this)},next(){return $e(De.NEXT,this)}},methods:{showTooltip(t){const e=document.body.clientWidth,n=t.clientX,r=t.target.querySelector(".tooltip");if(!r)return;const i=r.style;nt,getPageLinkConfig:({frontmatter:t})=>t.next},PREV:{resolveLink:function(t,e){return je(t,e,-1)},getThemeLinkConfig:({prevLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.prev}};function $e(t,{$themeConfig:e,$page:n,$route:i,$site:o,sidebarItems:s}){const{resolveLink:a,getThemeLinkConfig:u,getPageLinkConfig:l}=t,c=u(e),h=l(n),f=Ae()(h)?c:h;return!1===f?void 0:Ee()(f)?Object(r.l)(o.pages,f,i.path):a(n,s)}function je(t,e,n){const r=[];!function t(e,n){for(let r=0,i=e.length;r({date:"",classify1:"",classifyList:[],cataloguePermalink:"",author:null,categories:[]}),created(){this.getPageInfo()},watch:{"$route.path"(){this.classifyList=[],this.getPageInfo()}},methods:{getPageInfo(){const t=this.$page,{relativePath:e}=t,{sidebar:n}=this.$themeConfig,r=e.split("/");r.forEach((t,e)=>{const n=t.split(".");if(e!==r.length-1)if(1===n)this.classifyList.push(n[0]);else{const e=t.indexOf(".");this.classifyList.push(t.substring(e+1)||"")}}),this.classify1=this.classifyList[0];const i=n&&n.catalogue?n.catalogue[this.classify1]:"",o=this.$frontmatter.author||this.$themeConfig.author;let s=(t.frontmatter.date||"").split(" ")[0];const{categories:a}=this.$frontmatter;this.date=s,this.cataloguePermalink=i,this.author=o,this.categories=a},getLink(t){const{cataloguePermalink:e}=this;return t===e?e:`${e}${"/"===e.charAt(e.length-1)?"":"/"}#${t}`}}}),Re=(n(352),Object(o.a)(Ne,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"articleInfo-wrap"},[e("div",{staticClass:"articleInfo"},[t.classify1&&"_posts"!==t.classify1?e("ul",{staticClass:"breadcrumbs"},[e("li",[e("router-link",{staticClass:"iconfont icon-home",attrs:{to:"/",title:"首页"}})],1),t._v(" "),t._l(t.classifyList,(function(n){return e("li",{key:n},[t.cataloguePermalink?e("router-link",{attrs:{to:t.getLink(n)}},[t._v(t._s(n))]):!1!==t.$themeConfig.category?e("router-link",{attrs:{to:"/categories/?category="+encodeURIComponent(n),title:"分类"}},[t._v(t._s(n))]):e("span",[t._v(t._s(n))])],1)}))],2):t._e(),t._v(" "),e("div",{staticClass:"info"},[t.author?e("div",{staticClass:"author iconfont icon-touxiang",attrs:{title:"作者"}},[t.author.href||t.author.link&&"string"==typeof t.author.link?e("a",{staticClass:"beLink",attrs:{href:t.author.href||t.author.link,target:"_blank",title:"作者"}},[t._v(t._s(t.author.name))]):e("a",{attrs:{href:"javascript:;"}},[t._v(t._s(t.author.name||t.author))])]):t._e(),t._v(" "),t.date?e("div",{staticClass:"date iconfont icon-riqi",attrs:{title:"创建时间"}},[e("a",{attrs:{href:"javascript:;"}},[t._v(t._s(t.date))])]):t._e(),t._v(" "),!1===t.$themeConfig.category||t.classify1&&"_posts"!==t.classify1||!t.categories?t._e():e("div",{staticClass:"date iconfont icon-wenjian",attrs:{title:"分类"}},t._l(t.categories,(function(n,r){return e("router-link",{key:r,attrs:{to:"/categories/?category="+encodeURIComponent(n)}},[t._v(t._s(n+" "))])})),1)])])])}),[],!1,null,"06225672",null).exports),ze={data:()=>({pageData:null,isStructuring:!0,appointDir:{}}),created(){this.getPageData();const t=this.$themeConfig.sidebar;t&&"auto"!==t||(this.isStructuring=!1,console.error("目录页数据依赖于结构化的侧边栏数据,请在主题设置中将侧边栏字段设置为'structuring',否则无法获取目录数据。"))},methods:{getPageData(){const t=this.$frontmatter.pageComponent;t&&t.data?this.pageData={...t.data,title:this.$frontmatter.title}:console.error("请在front matter中设置pageComponent和pageComponent.data数据")},getCatalogueList(){const{sidebar:t}=this.$site.themeConfig,{data:e}=this.$frontmatter.pageComponent;let n=(e.path||e.key).split("/"),r=t[`/${n[0]}/`];return n.length>1&&(n.shift(),r=this.appointDirDeal(0,n,r)),r||console.error("未获取到目录数据,请查看front matter中设置的path是否正确。"),r},type:t=>Object.prototype.toString.call(t).match(/\[object (.*?)\]/)[1].toLowerCase(),appointDirDeal(t,e,n){let r=e[t];void 0!==r&&-1!==r.indexOf(".")&&(r=r.substring(r.indexOf(".")+1));for(let i=0;i({headers:[],hashText:""}),mounted(){this.getHeadersData(),this.getHashText()},watch:{$route(){this.headers=this.$page.headers,this.getHashText()}},methods:{getHeadersData(){this.headers=this.$page.headers},getHashText(){this.hashText=decodeURIComponent(window.location.hash.slice(1))}}},Fe=(n(354),{data:()=>({badges:["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg=="],currentBadge:""}),created(){this.$themeConfig.titleBadgeIcons&&(this.badges=this.$themeConfig.titleBadgeIcons),this.currentBadge=this.getBadge()},watch:{"$route.path"(){this.currentBadge=this.getBadge()}},methods:{getBadge(){return this.badges[Math.floor(Math.random()*this.badges.length)]}}}),We={mixins:[Fe],data:()=>({updateBarConfig:null}),props:["sidebarItems"],components:{PageEdit:Me,PageNav:Xe,ArticleInfo:Re,Catalogue:Ue,UpdateArticle:Nt,RightMenu:Object(o.a)(He,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"right-menu-wrapper"},[e("div",{staticClass:"right-menu-margin"},[e("div",{staticClass:"right-menu-title"},[t._v("目录")]),t._v(" "),e("div",{staticClass:"right-menu-content"},t._l(t.headers,(function(n,r){return e("div",{key:r,class:["right-menu-item","level"+n.level,{active:n.slug===t.hashText}]},[e("a",{attrs:{href:"#"+n.slug}},[t._v(t._s(n.title))])])})),0)])])}),[],!1,null,null,null).exports},created(){this.updateBarConfig=this.$themeConfig.updateBar},computed:{bgStyle(){const{contentBgStyle:t}=this.$themeConfig;return t?"bg-style-"+t:""},isShowUpdateBar(){return!this.updateBarConfig||!1!==this.updateBarConfig.showToArticle},showTitle(){return!this.$frontmatter.pageComponent},showRightMenu(){const{$frontmatter:t,$themeConfig:e,$page:n}=this,{sidebar:r}=t;return!1!==e.rightMenuBar&&n.headers&&!1!==(t&&r&&!1!==r)},pageComponent(){return!!this.$frontmatter.pageComponent&&this.$frontmatter.pageComponent.name},isShowSlotT(){return this.getShowStatus("pageTshowMode")},isShowSlotB(){return this.getShowStatus("pageBshowMode")}},methods:{getShowStatus(t){const{htmlModules:e}=this.$themeConfig;return!!e&&("article"===e[t]?this.isArticle():"custom"!==e[t]||!this.isArticle())},isArticle(){return!1!==this.$frontmatter.article}}},qe=(n(355),Object(o.a)(We,(function(){var t=this,e=t._self._c;return e("div",[e("main",{staticClass:"page"},[e("div",{class:"theme-vdoing-wrapper "+t.bgStyle},[t.isArticle()?e("ArticleInfo"):e("div",{staticClass:"placeholder"}),t._v(" "),t.pageComponent?e(t.pageComponent,{tag:"component",staticClass:"theme-vdoing-content"}):t._e(),t._v(" "),e("div",{staticClass:"content-wrapper"},[t.showRightMenu?e("RightMenu"):t._e(),t._v(" "),t.showTitle?e("h1",[!1!==t.$themeConfig.titleBadge?e("img",{attrs:{src:t.currentBadge}}):t._e(),t._v(t._s(this.$page.title)),t.$frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v(t._s(t.$frontmatter.titleTag))]):t._e()]):t._e(),t._v(" "),t.isShowSlotT?t._t("top"):t._e(),t._v(" "),e("Content",{staticClass:"theme-vdoing-content"})],2),t._v(" "),t.isShowSlotB?t._t("bottom"):t._e(),t._v(" "),e("PageEdit"),t._v(" "),e("PageNav",t._b({},"PageNav",{sidebarItems:t.sidebarItems},!1))],2),t._v(" "),t.isShowUpdateBar?e("UpdateArticle",{attrs:{length:3,moreArticle:t.updateBarConfig&&t.updateBarConfig.moreArticle}}):t._e()],1)])}),[],!1,null,null,null).exports),Ge={data:()=>({category:"",total:0,perPage:10,currentPage:1}),components:{MainLayout:$t,PostList:Yt,Pagination:zt,CategoriesBar:Wt},mounted(){const t=this.$route.query.category;t?(this.category=t,this.total=this.$groupPosts.categories[t].length):this.total=this.$sortPosts.length,this.$route.query.p&&(this.currentPage=Number(this.$route.query.p));const e=document.querySelector(".categories");e&&setTimeout(()=>{const t=e.querySelector(".active"),n=t?t.offsetTop:0;e.scrollTo({top:n,behavior:"smooth"})},300)},methods:{handlePagination(t){this.currentPage=t}},watch:{"$route.query.category"(t){this.category=t?decodeURIComponent(t):"",this.category?this.total=this.$groupPosts.categories[this.category].length:this.total=this.$sortPosts.length,this.currentPage=1}}},Ke=(n(356),Object(o.a)(Ge,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page categories-page"},[e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return[t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,category:t.category}}):t._e(),t._v(" "),e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage,category:t.category}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})]},proxy:!0},{key:"mainRight",fn:function(){return[t.$categoriesAndTags.categories.length?e("CategoriesBar",{attrs:{categoriesData:t.$categoriesAndTags.categories,category:t.category}}):t._e()]},proxy:!0}])})],1)}),[],!1,null,null,null).exports),Qe={data:()=>({tag:"",total:0,perPage:10,currentPage:1}),components:{MainLayout:$t,PostList:Yt,Pagination:zt,TagsBar:Gt},mounted(){const t=this.$route.query.tag;t?(this.tag=t,this.total=this.$groupPosts.tags[t].length):this.total=this.$sortPosts.length,this.$route.query.p&&(this.currentPage=Number(this.$route.query.p))},methods:{handlePagination(t){this.currentPage=t}},watch:{"$route.query.tag"(t){this.tag=t?decodeURIComponent(t):"",this.tag?this.total=this.$groupPosts.tags[this.tag].length:this.total=this.$sortPosts.length,this.currentPage=1}}},Je=(n(357),Object(o.a)(Qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page tags-page"},[e("MainLayout",{scopedSlots:t._u([{key:"mainLeft",fn:function(){return[t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,tag:t.tag}}):t._e(),t._v(" "),e("PostList",{attrs:{currentPage:t.currentPage,perPage:t.perPage,tag:t.tag}}),t._v(" "),e("Pagination",{directives:[{name:"show",rawName:"v-show",value:Math.ceil(t.total/t.perPage)>1,expression:"Math.ceil(total / perPage) > 1"}],attrs:{total:t.total,perPage:t.perPage,currentPage:t.currentPage},on:{getCurrentPage:t.handlePagination}})]},proxy:!0},{key:"mainRight",fn:function(){return[t.$categoriesAndTags.tags.length?e("TagsBar",{attrs:{tagsData:t.$categoriesAndTags.tags,tag:t.tag}}):t._e()]},proxy:!0}])})],1)}),[],!1,null,null,null).exports),Ze=n(68),Ve=n.n(Ze),tn={mixins:[Fe],data:()=>({postsList:[],countByYear:{},perPage:80,currentPage:1}),created(){this.getPageData();const{$sortPostsByDate:t,countByYear:e}=this;for(let n=0;n{if(this.postsList.lengthr&&n+r>=i-250&&this.loadmore()}},200))},methods:{getPageData(){const t=this.currentPage,e=this.perPage;this.postsList=this.postsList.concat(this.$sortPostsByDate.slice((t-1)*e,t*e))},loadmore(){this.currentPage=this.currentPage+1,this.getPageData()},getYear(t){const e=this.postsList[t];if(!e)return;const{frontmatter:{date:n}}=e;return n&&"string"===Object(r.n)(n)?n.slice(0,4):void 0},getDate(t){const{frontmatter:{date:e}}=t;if(e&&"string"===Object(r.n)(e))return e.slice(5,10)}}},en=(n(358),Object(o.a)(tn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-page archives-page"},[e("div",{staticClass:"theme-vdoing-wrapper"},[e("h1",[!1!==t.$themeConfig.titleBadge?e("img",{attrs:{src:t.currentBadge}}):t._e(),t._v("\n "+t._s(t.$page.title)+"\n ")]),t._v(" "),e("div",{staticClass:"count"},[t._v("\n 总共 "),e("i",[t._v(t._s(t.$sortPostsByDate.length))]),t._v(" 篇文章\n ")]),t._v(" "),e("ul",[t._l(t.postsList,(function(n,r){return[(t.year=t.getYear(r))!==t.getYear(r-1)?e("li",{key:r+t.$sortPostsByDate.length,staticClass:"year"},[e("h2",[t._v("\n "+t._s(t.year)+"\n "),e("span",[e("i",[t._v(t._s(t.countByYear[t.year]))]),t._v(" 篇\n ")])])]):t._e(),t._v(" "),e("li",{key:r},[e("router-link",{attrs:{to:n.path}},[e("span",{staticClass:"date"},[t._v(t._s(t.getDate(n)))]),t._v("\n "+t._s(n.title)+"\n "),n.frontmatter.titleTag?e("span",{staticClass:"title-tag"},[t._v("\n "+t._s(n.frontmatter.titleTag)+"\n ")]):t._e()])],1)]}))],2)])])}),[],!1,null,null,null).exports),nn={name:"Sidebar",components:{SidebarLinks:n(322).default,NavLinks:Pe},props:["items"],computed:{blogger(){return this.$themeConfig.blogger}}},rn=(n(361),Object(o.a)(nn,(function(){var t=this,e=t._self._c;return e("aside",{staticClass:"sidebar"},[t.blogger?e("div",{staticClass:"blogger"},[e("img",{attrs:{src:t.blogger.avatar}}),t._v(" "),e("div",{staticClass:"blogger-info"},[e("h3",[t._v(t._s(t.blogger.name))]),t._v(" "),t.blogger.social?e("div",{staticClass:"icons"},t._l(t.blogger.social.icons,(function(t,n){return e("a",{key:n,class:["iconfont",t.iconClass],attrs:{href:t.link,title:t.title,target:"_blank"}})})),0):e("span",[t._v(t._s(t.blogger.slogan))])])]):t._e(),t._v(" "),e("NavLinks"),t._v(" "),t._t("top"),t._v(" "),e("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom")],2)}),[],!1,null,null,null).exports),on=Object.assign||function(t){for(var e=1;e({threshold:100,scrollTop:null,showCommentBut:!1,commentTop:null,currentMode:"",showModeBox:!1,modeList:[{name:"跟随系统",icon:"icon-zidong",KEY:"auto"},{name:"浅色模式",icon:"icon-rijianmoshi",KEY:"light"},{name:"深色模式",icon:"icon-yejianmoshi",KEY:"dark"},{name:"阅读模式",icon:"icon-yuedu",KEY:"read"}],_scrollTimer:null,_textareaEl:null,_recordScrollTop:null,COMMENT_SELECTOR_1:"#vuepress-plugin-comment",COMMENT_SELECTOR_2:"#valine-vuepress-comment",COMMENT_SELECTOR_3:".vssue"}),mounted(){if(this.currentMode=cn.get("mode")||this.$themeConfig.defaultMode||"auto",this.scrollTop=this.getScrollTop(),window.addEventListener("scroll",Ve()(()=>{this.scrollTop=this.getScrollTop()},100)),window.addEventListener("load",()=>{this.getCommentTop()}),document.documentElement.clientWidth<719){this.$refs.modeBox.onclick=()=>{this.showModeBox=!1},window.addEventListener("scroll",Ve()(()=>{this.showModeBox&&(this.showModeBox=!1)},100))}const t=document.querySelectorAll(".buttons .button");for(let e=0;e{n.classList.remove("hover")},150)}))}},computed:{showToTop(){return this.scrollTop>this.threshold}},methods:{toggleMode(t){this.currentMode=t,this.$emit("toggle-theme-mode",t)},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,scrollToTop(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0},getCommentTop(){setTimeout(()=>{let t=document.querySelector(this.COMMENT_SELECTOR_1)||document.querySelector(this.COMMENT_SELECTOR_2)||document.querySelector(this.COMMENT_SELECTOR_3);t&&(this.showCommentBut=!1!==this.$frontmatter.comment&&!0!==this.$frontmatter.home,this.commentTop=t.offsetTop-58)},500)},scrollToComment(){window.scrollTo({top:this.commentTop,behavior:"smooth"}),this._textareaEl=document.querySelector(this.COMMENT_SELECTOR_1+" textarea")||document.querySelector(this.COMMENT_SELECTOR_2+" input")||document.querySelector(this.COMMENT_SELECTOR_3+" textarea"),this._textareaEl&&this.getScrollTop()!==this._recordScrollTop?document.addEventListener("scroll",this._handleListener):this._textareaEl&&this.getScrollTop()===this._recordScrollTop&&this._handleFocus()},_handleListener(){clearTimeout(this._scrollTimer),this._scrollTimer=setTimeout(()=>{document.removeEventListener("scroll",this._handleListener),this._recordScrollTop=this.getScrollTop(),this._handleFocus()},30)},_handleFocus(){this._textareaEl.focus(),this._textareaEl.classList.add("yellowBorder"),setTimeout(()=>{this._textareaEl.classList.remove("yellowBorder")},500)}},watch:{"$route.path"(){this.showCommentBut=!1,this.getCommentTop()}}},fn=(n(362),Object(o.a)(hn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"buttons"},[e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.showToTop,expression:"showToTop"}],staticClass:"button blur go-to-top iconfont icon-fanhuidingbu",attrs:{title:"返回顶部"},on:{click:t.scrollToTop}})]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCommentBut,expression:"showCommentBut"}],staticClass:"button blur go-to-comment iconfont icon-pinglun",attrs:{title:"去评论"},on:{click:t.scrollToComment}}),t._v(" "),e("div",{staticClass:"button blur theme-mode-but iconfont icon-zhuti",attrs:{title:"主题模式"},on:{mouseenter:function(e){t.showModeBox=!0},mouseleave:function(e){t.showModeBox=!1},click:function(e){t.showModeBox=!0}}},[e("transition",{attrs:{name:"mode"}},[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.showModeBox,expression:"showModeBox"}],ref:"modeBox",staticClass:"select-box",on:{click:function(t){t.stopPropagation()},touchstart:function(t){t.stopPropagation()}}},t._l(t.modeList,(function(n){return e("li",{key:n.KEY,staticClass:"iconfont",class:[n.icon,{active:n.KEY===t.currentMode}],on:{click:function(e){return t.toggleMode(n.KEY)}}},[t._v("\n "+t._s(n.name)+"\n ")])})),0)])],1)],1)}),[],!1,null,null,null).exports),pn={computed:{social(){return this.$themeConfig.social},footer(){return this.$themeConfig.footer}}},gn=(n(363),Object(o.a)(pn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"footer"},[t.social&&t.social.icons?e("div",{staticClass:"icons"},t._l(t.social.icons,(function(t,n){return e("a",{key:n,class:["iconfont",t.iconClass],attrs:{href:t.link,title:t.title,target:"_blank"}})})),0):t._e(),t._v(" "),t._v("\n Theme by\n "),e("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing",target:"_blank",title:"本站主题"}},[t._v("Vdoing")]),t._v(" "),t.footer?[t._v("\n | Copyright © "+t._s(t.footer.createYear)+"-"+t._s((new Date).getFullYear())+"\n "),e("span",{domProps:{innerHTML:t._s(t.footer.copyrightInfo)}})]:t._e()],2)}),[],!1,null,null,null).exports),dn={data:()=>({bgImg:"",opacity:.5}),mounted(){let{bodyBgImg:t,bodyBgImgOpacity:e,bodyBgImgInterval:n=15}=this.$themeConfig;if("string"===Object(r.n)(t))this.bgImg=t;else if("array"===Object(r.n)(t)){let e=0,r=null;this.bgImg=t[e],clearInterval(r),r=setInterval(()=>{if(++e>=t.length&&(e=0),this.bgImg=t[e],t[e+1]){(new Image).src=t[e+1]}},1e3*n)}void 0!==e&&(this.opacity=e)}},vn=(n(364),Object(o.a)(dn,(function(){return(0,this._self._c)("div",{staticClass:"body-bg",style:`background: url(${this.bgImg}) center center / cover no-repeat;opacity:${this.opacity}`})}),[],!1,null,null,null).exports);var mn={components:{Home:Qt,Navbar:Se,Page:qe,CategoriesPage:Ke,TagsPage:Je,ArchivesPage:en,Sidebar:rn,Footer:gn,Buttons:fn,BodyBgImg:vn},data:()=>({hideNavbar:!1,isSidebarOpen:!0,showSidebar:!1,themeMode:"auto",showWindowLB:!0,showWindowRB:!0}),computed:{sidebarSlotTop(){return this.getHtmlStr("sidebarT")},sidebarSlotBottom(){return this.getHtmlStr("sidebarB")},pageSlotTop(){return this.getHtmlStr("pageT")},pageSlotBottom(){return this.getHtmlStr("pageB")},windowLB(){return this.getHtmlStr("windowLB")},windowRB(){return this.getHtmlStr("windowRB")},showRightMenu(){const{headers:t}=this.$page;return!this.$frontmatter.home&&!1!==this.$themeConfig.rightMenuBar&&t&&t.length&&!1!==this.$frontmatter.sidebar},shouldShowNavbar(){const{themeConfig:t}=this.$site,{frontmatter:e}=this.$page;return!1!==e.navbar&&!1!==t.navbar&&(this.$title||t.logo||t.repo||t.nav||this.$themeLocaleConfig.nav)},shouldShowSidebar(){const{frontmatter:t}=this.$page;return!t.home&&!1!==t.sidebar&&this.sidebarItems.length&&!1!==t.showSidebar},sidebarItems(){return Object(r.m)(this.$page,this.$page.regularPath,this.$site,this.$localePath)},pageClasses(){const t=this.$page.frontmatter.pageClass;return[{"no-navbar":!this.shouldShowNavbar,"hide-navbar":this.hideNavbar,"sidebar-open":this.isSidebarOpen,"no-sidebar":!this.shouldShowSidebar,"have-rightmenu":this.showRightMenu,"have-body-img":this.$themeConfig.bodyBgImg,"only-sidebarItem":1===this.sidebarItems.length&&"page"===this.sidebarItems[0].type},t]}},created(){const t=this.$themeConfig.sidebarOpen;!1===t&&(this.isSidebarOpen=t)},beforeMount(){this.isSidebarOpenOfclientWidth();const t=cn.get("mode"),{defaultMode:e}=this.$themeConfig;e&&"auto"!==e&&!t?this.themeMode=e:t&&"auto"!==t&&"auto"!==e?this.themeMode=t:this._autoMode(),this.setBodyClass();const n=this.$themeConfig.social;if(n&&n.iconfontCssFile){let t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),t.setAttribute("href",n.iconfontCssFile),document.head.appendChild(t)}},mounted(){const t=document.location.hash;if(t.length>1){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);n&&n.scrollIntoView()}this.showSidebar=!0,this.$router.afterEach(()=>{this.isSidebarOpenOfclientWidth()});let e=0,n=0;window.addEventListener("scroll",te.a.throttle(()=>{this.isSidebarOpen||(e=this.getScrollTop(),this.hideNavbar=n58,setTimeout(()=>{n=e},0))},300))},watch:{isSidebarOpen(){this.isSidebarOpen&&(this.hideNavbar=!1)},themeMode(){this.setBodyClass()}},methods:{getHtmlStr(t){const{htmlModules:e}=this.$themeConfig;return e?e[t]:""},setBodyClass(){let{pageStyle:t="card",bodyBgImg:e}=this.$themeConfig;("card"!==t&&"line"!==t||e)&&(t="card"),document.body.className=`theme-mode-${this.themeMode} theme-style-${t}`},getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,isSidebarOpenOfclientWidth(){document.documentElement.clientWidth<719&&(this.isSidebarOpen=!1)},toggleSidebar(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen,this.$emit("toggle-sidebar",this.isSidebarOpen)},_autoMode(){window.matchMedia("(prefers-color-scheme: dark)").matches?this.themeMode="dark":this.themeMode="light"},toggleThemeMode(t){"auto"===t?this._autoMode():this.themeMode=t,cn.set("mode",t)},onTouchStart(t){this.touchStart={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}},onTouchEnd(t){const e=t.changedTouches[0].clientX-this.touchStart.x,n=t.changedTouches[0].clientY-this.touchStart.y;Math.abs(e)>Math.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}},yn=(n(365),Object(o.a)(mn,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?e("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),e("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),!1!==t.$themeConfig.sidebarHoverTriggerOpen?e("div",{staticClass:"sidebar-hover-trigger"}):t._e(),t._v(" "),e("Sidebar",{directives:[{name:"show",rawName:"v-show",value:t.showSidebar,expression:"showSidebar"}],attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([t.sidebarSlotTop?{key:"top",fn:function(){return[e("div",{staticClass:"sidebar-slot sidebar-slot-top",domProps:{innerHTML:t._s(t.sidebarSlotTop)}})]},proxy:!0}:null,t.sidebarSlotBottom?{key:"bottom",fn:function(){return[e("div",{staticClass:"sidebar-slot sidebar-slot-bottom",domProps:{innerHTML:t._s(t.sidebarSlotBottom)}})]},proxy:!0}:null],null,!0)}),t._v(" "),t.$page.frontmatter.home?e("Home"):t.$page.frontmatter.categoriesPage?e("CategoriesPage"):t.$page.frontmatter.tagsPage?e("TagsPage"):t.$page.frontmatter.archivesPage?e("ArchivesPage"):e("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([t.pageSlotTop?{key:"top",fn:function(){return[e("div",{staticClass:"page-slot page-slot-top",domProps:{innerHTML:t._s(t.pageSlotTop)}})]},proxy:!0}:null,t.pageSlotBottom?{key:"bottom",fn:function(){return[e("div",{staticClass:"page-slot page-slot-bottom",domProps:{innerHTML:t._s(t.pageSlotBottom)}})]},proxy:!0}:null],null,!0)}),t._v(" "),e("Footer"),t._v(" "),e("Buttons",{ref:"buttons",on:{"toggle-theme-mode":t.toggleThemeMode}}),t._v(" "),t.$themeConfig.bodyBgImg?e("BodyBgImg"):t._e(),t._v(" "),t.windowLB?e("div",{directives:[{name:"show",rawName:"v-show",value:t.showWindowLB,expression:"showWindowLB"}],staticClass:"custom-html-window custom-html-window-lb"},[e("div",{staticClass:"custom-wrapper"},[e("span",{staticClass:"close-but",on:{click:function(e){t.showWindowLB=!1}}},[t._v("×")]),t._v(" "),e("div",{domProps:{innerHTML:t._s(t.windowLB)}})])]):t._e(),t._v(" "),t.windowRB?e("div",{directives:[{name:"show",rawName:"v-show",value:t.showWindowRB,expression:"showWindowRB"}],staticClass:"custom-html-window custom-html-window-rb"},[e("div",{staticClass:"custom-wrapper"},[e("span",{staticClass:"close-but",on:{click:function(e){t.showWindowRB=!1}}},[t._v("×")]),t._v(" "),e("div",{domProps:{innerHTML:t._s(t.windowRB)}})])]):t._e()],1)}),[],!1,null,null,null));e.default=yn.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/20.3ad6f2c9.js b/neutrino-proxy/assets/js/20.3ad6f2c9.js new file mode 100644 index 00000000..2920a928 --- /dev/null +++ b/neutrino-proxy/assets/js/20.3ad6f2c9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{385:function(t,r,e){"use strict";e.r(r);var s=e(14),a=Object(s.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h2",{attrs:{id:"问题描述"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#问题描述"}},[t._v("#")]),t._v(" 问题描述")]),t._v(" "),r("p",[t._v("代理本地udp端口9231,公网访问代理端口无效,代理端口测试发送成功,但是本地服务没有收到,使用路由器的ddns功能也可以成功代理。")]),t._v(" "),r("h2",{attrs:{id:"解决方案"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#解决方案"}},[t._v("#")]),t._v(" 解决方案")]),t._v(" "),r("ul",[r("li",[t._v("防火墙开放端口的时候一定要指定udp协议")]),t._v(" "),r("li",[t._v("还有如果想收到回复需要配置两个响应参数")]),t._v(" "),r("li",[t._v("响应数量根据实际响应数量配置,可以配置的大一些,但是不能比实际小")]),t._v(" "),r("li",[t._v("超时时间根据实际响应时间配置,比如正常响应时间是10s,这里就可以配置15000毫秒等\n"),r("img",{attrs:{src:t.$withBase("/img/run-example/question_3_1.png")}})]),t._v(" "),r("li",[t._v("相关链接:"),r("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues/I83XOI",target:"_blank",rel:"noopener noreferrer"}},[t._v("1.9.0版本udp代理无效 · Issue #I83XOI · dromara/neutrino-proxy - Gitee.com"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("贡献者:gitee:眉黛如画")])])])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/21.e3560148.js b/neutrino-proxy/assets/js/21.e3560148.js new file mode 100644 index 00000000..9672b421 --- /dev/null +++ b/neutrino-proxy/assets/js/21.e3560148.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{386:function(t,e,a){"use strict";a.r(e);var s=a(14),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"问题描述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#问题描述"}},[t._v("#")]),t._v(" 问题描述")]),t._v(" "),e("p",[t._v("内网穿透 Vue项目出现Invalid Host header 的解决方案")]),t._v(" "),e("h2",{attrs:{id:"解决方案"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#解决方案"}},[t._v("#")]),t._v(" 解决方案")]),t._v(" "),e("p",[t._v("manifest.json中配置")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('"h5":{\n\t\t"devServer":{\n\t\t\t"disableHostCheck":true\n\t\t}\n},\n')])])]),e("ul",[e("li",[t._v("相关链接:"),e("a",{attrs:{href:"https://blog.csdn.net/weixin_41549915/article/details/96132925",target:"_blank",rel:"noopener noreferrer"}},[t._v("内网穿透 Vue项目出现Invalid Host header 的解决方案"),e("OutboundLink")],1)]),t._v(" "),e("li",[t._v("贡献者:wx:明天会更好")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/22.eb77dd26.js b/neutrino-proxy/assets/js/22.eb77dd26.js new file mode 100644 index 00000000..e0cb22bf --- /dev/null +++ b/neutrino-proxy/assets/js/22.eb77dd26.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{387:function(t,a,o){"use strict";o.r(a);var n=o(14),r=Object(n.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h2",{attrs:{id:"_1-1、报错-data-truncation-data-too-long-for-column-name-at-row-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-1、报错-data-truncation-data-too-long-for-column-name-at-row-1"}},[this._v("#")]),this._v(" 1.1、报错“Data truncation: Data too long for column 'name' at row 1”")]),this._v(" "),t("p",[this._v("配置文件中配置的mysql连接地址,去掉“characterEncoding=UTF-8”参数")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/23.6aa343b0.js b/neutrino-proxy/assets/js/23.6aa343b0.js new file mode 100644 index 00000000..75954b90 --- /dev/null +++ b/neutrino-proxy/assets/js/23.6aa343b0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{388:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("主题的配置在"),a("code",[t._v(".vuepress/config.ts")]),t._v("文件的"),a("code",[t._v("themeConfig")]),t._v("字段中,是在原有配置的基础上做的新增和修改,配置示例请查看:"),a("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/docs/.vuepress/config.ts",target:"_blank",rel:"noopener noreferrer"}},[t._v("config.ts"),a("OutboundLink")],1),t._v("。")]),t._v(" "),a("p",[t._v("更多官方配置,请查看"),a("a",{attrs:{href:"https://vuepress.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("vuepress文档"),a("OutboundLink")],1),t._v("。")]),t._v(" "),a("h2",{attrs:{id:"是否打开分类、标签、归档"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#是否打开分类、标签、归档"}},[t._v("#")]),t._v(" 是否打开分类、标签、归档")]),t._v(" "),a("h3",{attrs:{id:"category"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#category"}},[t._v("#")]),t._v(" category")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开分类功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成的front matter包含分类字段")]),t._v(" "),a("li",[t._v("页面中显示与分类相关的信息和模块")]),t._v(" "),a("li",[t._v("自动生成分类页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("h3",{attrs:{id:"tag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tag"}},[t._v("#")]),t._v(" tag")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开标签功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成的front matter包含标签字段")]),t._v(" "),a("li",[t._v("页面中显示与标签相关的信息和模块")]),t._v(" "),a("li",[t._v("自动生成标签页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("h3",{attrs:{id:"archive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#archive"}},[t._v("#")]),t._v(" archive")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开归档功能。 如打开,会做的事情有:")]),t._v(" "),a("ol",[a("li",[t._v("自动生成归档页面(在@pages文件夹)")])]),t._v(" "),a("p",[t._v("如关闭,则反之。")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("如果你仅仅是想使用这个主题来搭建知识库,并不想使用分类、标签、归档功能,就可以关闭它们。")])]),t._v(" "),a("h3",{attrs:{id:"使用分类页、标签页、归档页链接"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用分类页、标签页、归档页链接"}},[t._v("#")]),t._v(" 使用分类页、标签页、归档页链接")]),t._v(" "),a("p",[t._v("当你打开了分类、标签、归档功能,就可以在导航或其他地方添加分类页、标签页、归档页的链接:")]),t._v(" "),a("ul",[a("li",[t._v("分类页: "),a("code",[t._v("/categories/")])]),t._v(" "),a("li",[t._v("标签页: "),a("code",[t._v("/tags/")])]),t._v(" "),a("li",[t._v("归档页: "),a("code",[t._v("/archives/")])])]),t._v(" "),a("h2",{attrs:{id:"碎片化文章默认分类值"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#碎片化文章默认分类值"}},[t._v("#")]),t._v(" 碎片化文章默认分类值")]),t._v(" "),a("h3",{attrs:{id:"categorytext"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#categorytext"}},[t._v("#")]),t._v(" categoryText")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("默认:'随笔'")])]),t._v(" "),a("p",[t._v("碎片化文章(_posts文件夹的文章)默认生成的分类值")]),t._v(" "),a("h2",{attrs:{id:"页面风格"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#页面风格"}},[t._v("#")]),t._v(" 页面风格")]),t._v(" "),a("h3",{attrs:{id:"pagestyle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagestyle"}},[t._v("#")]),t._v(" pageStyle "),a("Badge",{attrs:{text:"v1.12.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("可选值:'card' | 'line' (line在未设置bodyBgImg时才生效)")]),t._v(" "),a("li",[t._v("默认:'card'")])]),t._v(" "),a("p",[t._v("页面风格,"),a("code",[t._v("card")]),t._v("时背景显示灰色衬托出卡片样式,"),a("code",[t._v("line")]),t._v("时背景显示纯色,并且部分模块带线条边框(未设置bodyBgImg时才生效)")]),t._v(" "),a("h3",{attrs:{id:"defaultmode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaultmode"}},[t._v("#")]),t._v(" defaultMode "),a("Badge",{attrs:{text:"v1.12.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")])]),t._v(" "),a("li",[t._v("可选值:'auto' | 'light' | 'dark' | 'read'")]),t._v(" "),a("li",[t._v("默认:'auto'")])]),t._v(" "),a("p",[t._v("默认外观模式,用户未在页面手动修改过模式时才生效,否则以用户设置的模式为准")]),t._v(" "),a("h2",{attrs:{id:"body背景大图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#body背景大图"}},[t._v("#")]),t._v(" body背景大图")]),t._v(" "),a("h3",{attrs:{id:"bodybgimg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimg"}},[t._v("#")]),t._v(" bodyBgImg")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")]),t._v(" | "),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("默认:undefined")])]),t._v(" "),a("p",[t._v("body背景大图,单张图片使用String,多张图片使用Array, 多张图片时每隔 秒换一张")]),t._v(" "),a("h3",{attrs:{id:"bodybgimgopacity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimgopacity"}},[t._v("#")]),t._v(" bodyBgImgOpacity "),a("Badge",{attrs:{text:"v1.4.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:0.5")]),t._v(" "),a("li",[t._v("选值范围:0 ~ 1.0")])]),t._v(" "),a("p",[t._v("body背景图透明度")]),t._v(" "),a("h3",{attrs:{id:"bodybgimginterval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bodybgimginterval"}},[t._v("#")]),t._v(" bodyBgImgInterval "),a("Badge",{attrs:{text:"v1.12.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:15")]),t._v(" "),a("li",[t._v("单位:s")])]),t._v(" "),a("p",[t._v("body有多张背景大图时的切换间隔")]),t._v(" "),a("h2",{attrs:{id:"文章标题前的图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章标题前的图标"}},[t._v("#")]),t._v(" 文章标题前的图标")]),t._v(" "),a("h3",{attrs:{id:"titlebadge"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titlebadge"}},[t._v("#")]),t._v(" titleBadge")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否打开文章标题图标")]),t._v(" "),a("h3",{attrs:{id:"titlebadgeicons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titlebadgeicons"}},[t._v("#")]),t._v(" titleBadgeIcons")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("默认:内置图标")])]),t._v(" "),a("p",[t._v("文章标题图标的地址")]),t._v(" "),a("h2",{attrs:{id:"文章内容块的背景底纹"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章内容块的背景底纹"}},[t._v("#")]),t._v(" 文章内容块的背景底纹")]),t._v(" "),a("h3",{attrs:{id:"contentbgstyle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contentbgstyle"}},[t._v("#")]),t._v(" contentBgStyle "),a("Badge",{attrs:{text:"v1.4.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("默认:undefined")]),t._v(" "),a("li",[t._v("选值:1 => 方格 | 2 => 横线 | 3 => 竖线 | 4 => 左斜线 | 5 => 右斜线 | 6 => 点状")])]),t._v(" "),a("p",[t._v("文章内容块的背景底纹")]),t._v(" "),a("h2",{attrs:{id:"侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#侧边栏"}},[t._v("#")]),t._v(" 侧边栏")]),t._v(" "),a("h3",{attrs:{id:"sidebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebar"}},[t._v("#")]),t._v(" sidebar")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("srting")]),t._v(" | "),a("code",[t._v("object")]),t._v(" | "),a("code",[t._v("array")])]),t._v(" "),a("li",[t._v("在默认主题原有的配置上新增两项参数:\n"),a("ul",[a("li",[a("code",[t._v("'structuring'")]),t._v(" 自动生成结构化侧边栏")]),t._v(" "),a("li",[a("code",[t._v("{ mode: 'structuring', collapsable: Boolean}")]),t._v(" 自动生成结构化侧边栏,并设置侧边栏是否可折叠,默认true")])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("如需构建结构化站点请把此配置设置为"),a("code",[t._v("structuring")]),t._v(" 或 "),a("code",[t._v("{ mode: 'structuring', collapsable: false}")])])]),t._v(" "),a("h3",{attrs:{id:"sidebaropen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebaropen"}},[t._v("#")]),t._v(" sidebarOpen")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("初始状态下是否打开侧边栏")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("在侧边栏关闭状态下,页面向下滚动时会隐藏顶部导航栏,让用户更专注于阅读。")])]),t._v(" "),a("h3",{attrs:{id:"对指定页面禁用侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#对指定页面禁用侧边栏"}},[t._v("#")]),t._v(" 对指定页面禁用侧边栏")]),t._v(" "),a("p",[t._v("你可以通过 front matter 来禁用指定页面的侧边栏:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h3",{attrs:{id:"碎片化文章的侧边栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#碎片化文章的侧边栏"}},[t._v("#")]),t._v(" 碎片化文章的侧边栏")]),t._v(" "),a("p",[t._v("在_posts文件夹的文章会自动在 front matter 添加 "),a("code",[t._v("sidebar: auto")])]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" auto\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"最近更新栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#最近更新栏"}},[t._v("#")]),t._v(" 最近更新栏")]),t._v(" "),a("h3",{attrs:{id:"updatebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updatebar"}},[t._v("#")]),t._v(" updateBar")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("object")])]),t._v(" "),a("li",[t._v("默认:"),a("code",[t._v("{showToArticle: true, moreArticle: '/archives/'}")]),t._v(" "),a("ul",[a("li",[t._v("showToArticle 显示到文章页底部,默认true")]),t._v(" "),a("li",[t._v("moreArticle “更多文章”跳转的页面,默认'/archives/'")])])])]),t._v(" "),a("p",[t._v("最近更新栏,显示于文章页底部和简约版首页文章列表")]),t._v(" "),a("h3",{attrs:{id:"非文章页的设置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#非文章页的设置"}},[t._v("#")]),t._v(" 非文章页的设置")]),t._v(" "),a("p",[t._v("对于非文章页,如目录页、关于、友情链接等自定义页面,最好在front matter设置"),a("code",[t._v("article: false")]),t._v(",设置之后这个页面将被认定为非文章页,不显示面包屑和作者、时间,不显示最近更新栏,不会参与到最近更新文章的数据计算中。")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"右侧文章大纲栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#右侧文章大纲栏"}},[t._v("#")]),t._v(" 右侧文章大纲栏")]),t._v(" "),a("h3",{attrs:{id:"rightmenubar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rightmenubar"}},[t._v("#")]),t._v(" rightMenuBar "),a("Badge",{attrs:{text:"v1.6.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否显示右侧文章大纲栏。设置为"),a("code",[t._v("false")]),t._v("或屏宽小于"),a("code",[t._v("1300px")]),t._v("时,文章大纲将与左侧侧边栏混合在一起。\n(注:在屏宽小于"),a("code",[t._v("1300px")]),t._v("下无论如何都不显示右侧文章大纲栏。)")]),t._v(" "),a("h2",{attrs:{id:"快捷翻页按钮"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#快捷翻页按钮"}},[t._v("#")]),t._v(" 快捷翻页按钮")]),t._v(" "),a("h3",{attrs:{id:"pagebutton"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagebutton"}},[t._v("#")]),t._v(" pageButton "),a("Badge",{attrs:{text:"v1.4.3 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("boolean")])]),t._v(" "),a("li",[t._v("默认:true")])]),t._v(" "),a("p",[t._v("是否显示快捷翻页按钮 (此按钮是文章页左右两边的箭头按钮,小屏中不会显示。)")]),t._v(" "),a("h2",{attrs:{id:"文章作者信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文章作者信息"}},[t._v("#")]),t._v(" 文章作者信息")]),t._v(" "),a("h3",{attrs:{id:"author"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[t._v("#")]),t._v(" author")]),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("string")]),t._v(" | "),a("code",[t._v("{name: String, link: String}")])]),t._v(" "),a("li",[t._v("默认:undefined")]),t._v(" "),a("li",[t._v("属性:\n"),a("ul",[a("li",[t._v("name 作者名称")]),t._v(" "),a("li",[t._v("link 作者链接")])])])]),t._v(" "),a("p",[t._v("文章默认的作者信息")]),t._v(" "),a("h3",{attrs:{id:"指定的文章作者信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#指定的文章作者信息"}},[t._v("#")]),t._v(" 指定的文章作者信息")]),t._v(" "),a("p",[t._v("你也可以在指定的文章front matter设置作者信息,优先级比默认作者信息高,示例:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者名\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxx.com\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n 或\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者名\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"博主信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#博主信息"}},[t._v("#")]),t._v(" 博主信息")]),t._v(" "),a("h3",{attrs:{id:"blogger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blogger"}},[t._v("#")]),t._v(" blogger")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{avatar: String, name: String, slogan: String}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("avatar 头像,必需")]),t._v(" "),a("li",[t._v("name 博主名称,必需")]),t._v(" "),a("li",[t._v("slogan 标语,可选")])])])]),t._v(" "),a("p",[t._v("博主信息显示于首页博主信息栏")]),t._v(" "),a("h2",{attrs:{id:"社交图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社交图标"}},[t._v("#")]),t._v(" 社交图标")]),t._v(" "),a("h3",{attrs:{id:"social"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#social"}},[t._v("#")]),t._v(" social")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{iconfontCssFile: String, icons: [{iconClass: String, title: String, link: String}]}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("iconfontCssFile 可选,阿里图标库(或其他)的在线css字体图标文件地址,对于主题没有的图标可自由添加")]),t._v(" "),a("li",[t._v("icons 图标列表,数量自由\n"),a("ul",[a("li",[t._v("iconClass 图标的Class名称")]),t._v(" "),a("li",[t._v("title 图标的title")]),t._v(" "),a("li",[t._v("link 图标的跳转链接")])])])])])]),t._v(" "),a("p",[t._v("社交图标显示于博主信息栏和页脚栏")]),t._v(" "),a("h3",{attrs:{id:"主题内置的社交图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#主题内置的社交图标"}},[t._v("#")]),t._v(" 主题内置的社交图标 "),a("Badge",{attrs:{text:"v1.2.2+, 部分v1.7.2+"}})],1),t._v(" "),a("table",{staticClass:"icons-table"},[a("tbody",[a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-weixin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("微信")]),t._v(" "),a("p",[t._v("icon-weixin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-QQ"}),t._v(" "),a("p",{staticClass:"name"},[t._v("QQ")]),t._v(" "),a("p",[t._v("icon-QQ")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-youjian"}),t._v(" "),a("p",{staticClass:"name"},[t._v("邮件")]),t._v(" "),a("p",[t._v("icon-youjian")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-npm"}),t._v(" "),a("p",{staticClass:"name"},[t._v("npm")]),t._v(" "),a("p",[t._v("icon-npm")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-github"}),t._v(" "),a("p",{staticClass:"name"},[t._v("github")]),t._v(" "),a("p",[t._v("icon-github")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-gitee"}),t._v(" "),a("p",{staticClass:"name"},[t._v("gitee")]),t._v(" "),a("p",[t._v("icon-gitee")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-weibo"}),t._v(" "),a("p",{staticClass:"name"},[t._v("微博")]),t._v(" "),a("p",[t._v("icon-weibo")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-zhihu"}),t._v(" "),a("p",{staticClass:"name"},[t._v("知乎")]),t._v(" "),a("p",[t._v("icon-zhihu")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-yuque"}),t._v(" "),a("p",{staticClass:"name"},[t._v("语雀")]),t._v(" "),a("p",[t._v("icon-yuque")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-douban"}),t._v(" "),a("p",{staticClass:"name"},[t._v("豆瓣")]),t._v(" "),a("p",[t._v("icon-douban")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-juejin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("掘金")]),t._v(" "),a("p",[t._v("icon-juejin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-jianshu"}),t._v(" "),a("p",{staticClass:"name"},[t._v("简书")]),t._v(" "),a("p",[t._v("icon-jianshu")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-sf"}),t._v(" "),a("p",{staticClass:"name"},[t._v("思否")]),t._v(" "),a("p",[t._v("icon-sf")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-bokeyuan"}),t._v(" "),a("p",{staticClass:"name"},[t._v("博客园")]),t._v(" "),a("p",[t._v("icon-bokeyuan")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-csdn"}),t._v(" "),a("p",{staticClass:"name"},[t._v("CSDN")]),t._v(" "),a("p",[t._v("icon-csdn")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-v2ex"}),t._v(" "),a("p",{staticClass:"name"},[t._v("v2ex")]),t._v(" "),a("p",[t._v("icon-v2ex")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-douyin"}),t._v(" "),a("p",{staticClass:"name"},[t._v("抖音")]),t._v(" "),a("p",[t._v("icon-douyin")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-bilibili"}),t._v(" "),a("p",{staticClass:"name"},[t._v("哔哩哔哩")]),t._v(" "),a("p",[t._v("icon-bilibili")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-youtube"}),t._v(" "),a("p",{staticClass:"name"},[t._v("youtube")]),t._v(" "),a("p",[t._v("icon-youtube")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-facebook"}),t._v(" "),a("p",{staticClass:"name"},[t._v("facebook")]),t._v(" "),a("p",[t._v("icon-facebook")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-twitter"}),t._v(" "),a("p",{staticClass:"name"},[t._v("twitter")]),t._v(" "),a("p",[t._v("icon-twitter")])])]),a("tr"),t._v(" "),a("tr",[a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-telegram"}),t._v(" "),a("p",{staticClass:"name"},[t._v("telegram")]),t._v(" "),a("p",[t._v("icon-telegram")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-rss"}),t._v(" "),a("p",{staticClass:"name"},[t._v("RSS")]),t._v(" "),a("p",[t._v("icon-rss")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-erji"}),t._v(" "),a("p",{staticClass:"name"},[t._v("耳机")]),t._v(" "),a("p",[t._v("icon-erji")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-mao"}),t._v(" "),a("p",{staticClass:"name"},[t._v("猫咪")]),t._v(" "),a("p",[t._v("icon-mao")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-shuben"}),t._v(" "),a("p",{staticClass:"name"},[t._v("书本")]),t._v(" "),a("p",[t._v("icon-shuben")])]),t._v(" "),a("td",{attrs:{align:"center",valign:"middle"}},[a("span",{staticClass:"iconfont icon-xiangce"}),t._v(" "),a("p",{staticClass:"name"},[t._v("相册")]),t._v(" "),a("p",[t._v("icon-xiangce")])])])])]),t._v(" "),a("style",[t._v("\n .icons-table{\n opacity: 0.8;\n }\n .icons-table td{\n padding: 1em;\n }\n .icons-table span::before{\n font-size: 26px;\n }\n .icons-table p.name{\n margin-top: 18px;\n font-size: 14px;\n }\n .icons-table p{\n margin: 10px 0 0 0;\n font-size: 15px;\n line-height: 15px;\n }\n")]),t._v(" "),a("h2",{attrs:{id:"扩展自动生成front-matter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#扩展自动生成front-matter"}},[t._v("#")]),t._v(" 扩展自动生成front matter")]),t._v(" "),a("h3",{attrs:{id:"extendfrontmatter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extendfrontmatter"}},[t._v("#")]),t._v(" extendFrontmatter "),a("Badge",{attrs:{text:"v1.11.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("类型:"),a("code",[t._v("Object")])]),t._v(" "),a("li",[t._v("默认:undefined")])]),t._v(" "),a("p",[t._v("当"),a("code",[t._v(".md")]),t._v("文件的front matter不存在extendFrontmatter内相应的字段时,将在运行开发服务"),a("code",[t._v("dev")]),t._v("或打包"),a("code",[t._v("build")]),t._v("时自动添加,但不会覆盖已有的数据。")]),t._v(" "),a("p",[a("strong",[t._v("例子:")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("extendFrontmatter")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'xugaoyi'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://github.com/xugaoyi'")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("''")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("生成到front matter:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xugaoyi\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//github.com/xugaoyi\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"页脚版权栏"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#页脚版权栏"}},[t._v("#")]),t._v(" 页脚版权栏")]),t._v(" "),a("h3",{attrs:{id:"footer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#footer"}},[t._v("#")]),t._v(" footer")]),t._v(" "),a("ul",[a("li",[t._v("参数和类型:"),a("code",[t._v("{createYear: Number | String, copyrightInfo: String}")])]),t._v(" "),a("li",[t._v("默认:undefined\n"),a("ul",[a("li",[t._v("createYear 博客创建的年份")]),t._v(" "),a("li",[t._v("copyrightInfo 可以配置包括版权信息、备案信息在内的所有信息,支持a标签")])])])]),t._v(" "),a("p",[t._v("页脚版权栏信息,原默认主题在首页的front matter中的"),a("code",[t._v("footer")]),t._v("配置项已弃用。")]),t._v(" "),a("h2",{attrs:{id:"自定义html模块"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义html模块"}},[t._v("#")]),t._v(" 自定义html模块")]),t._v(" "),a("blockquote",[a("p",[t._v("可用于插入广告模块")])]),t._v(" "),a("h3",{attrs:{id:"htmlmodules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#htmlmodules"}},[t._v("#")]),t._v(" htmlModules "),a("Badge",{attrs:{text:"v1.7.0 +"}})],1),t._v(" "),a("ul",[a("li",[a("p",[t._v("类型:"),a("code",[t._v("object")])])]),t._v(" "),a("li",[a("p",[t._v("默认:undefined")])]),t._v(" "),a("li",[a("p",[t._v("属性:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("homeSidebarB")]),t._v(" 首页侧边栏底部")]),t._v(" "),a("li",[a("code",[t._v("sidebarT")]),t._v(" 所有左侧边栏顶部")]),t._v(" "),a("li",[a("code",[t._v("sidebarB")]),t._v(" 所有左侧边栏底部")]),t._v(" "),a("li",[a("code",[t._v("pageT")]),t._v(" 页面顶部")]),t._v(" "),a("li",[a("code",[t._v("pageB")]),t._v(" 页面底部")]),t._v(" "),a("li",[a("code",[t._v("pageTshowMode")]),t._v(" 页面顶部的显示方式\n"),a("ul",[a("li",[a("code",[t._v("未配置")]),t._v(" 默认所有页面显示")]),t._v(" "),a("li",[a("code",[t._v("'article'")]),t._v(" 仅文章页①显示")]),t._v(" "),a("li",[a("code",[t._v("'custom'")]),t._v(" 仅自定义页①显示")])])]),t._v(" "),a("li",[a("code",[t._v("pageBshowMode")]),t._v(" 页面底部的显示方式\n"),a("ul",[a("li",[a("code",[t._v("未配置")]),t._v(" 默认全局显示")]),t._v(" "),a("li",[a("code",[t._v("'article'")]),t._v(" 仅文章页①显示")]),t._v(" "),a("li",[a("code",[t._v("'custom'")]),t._v(" 仅自定义页①显示")])])]),t._v(" "),a("li",[a("code",[t._v("windowLB")]),t._v(" 全局窗口左下角②")]),t._v(" "),a("li",[a("code",[t._v("windowRB")]),t._v(" 全局窗口右下角②")])]),t._v(" "),a("br"),t._v(" "),a("blockquote",[a("p",[t._v("①注:在.md文件front matter配置"),a("code",[t._v("article: false")]),t._v("的页面是自定义页,未配置的默认是文章页(首页除外)。")]),t._v(" "),a("p",[t._v("②注:windowLB 和 windowRB:1.展示区块最大宽高200px*400px。2.请给自定义元素定一个不超过200px*400px的宽高。3.在屏幕宽度小于960px时无论如何都不会显示。")])])]),t._v(" "),a("li",[a("p",[t._v("格式:")])])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("htmlModules")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("homeSidebarB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("sidebarT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("sidebarB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageTshowMode")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'article'")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'custom'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("pageBshowMode")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'article'")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'custom'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("windowLB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("windowRB")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" htmlString"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/24.7e68c2e7.js b/neutrino-proxy/assets/js/24.7e68c2e7.js new file mode 100644 index 00000000..15e8df95 --- /dev/null +++ b/neutrino-proxy/assets/js/24.7e68c2e7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{389:function(t,e,s){"use strict";s.r(e);var a=s(14),n=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("p",[t._v("在"),e("code",[t._v("docs")]),t._v("目录下的"),e("code",[t._v("index.md")]),t._v("或"),e("code",[t._v("README.md")]),t._v("的 front matter 指定 "),e("code",[t._v("home: true")]),t._v(",就会为你的站点生成一个首页,示例:")]),t._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("home")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# heroImage: /img/web.png")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("heroText")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Evan's blog\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tagline")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Web前端技术博客,积跬步以至千里,致敬每个爱学习的你。\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# actionText: 立刻进入 →")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# actionLink: /web/")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# bannerBg: auto # auto => 网格纹背景(有bodyBgImg时无背景),默认 | none => 无 | '大图地址' | background: 自定义背景样式 提示:如发现文本颜色不适应你的背景时可以到palette.styl修改$bannerTextColor变量")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("features")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选的")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 前端\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" JavaScript、ES6、Vue框架等前端技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /web/ "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/web.png "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 可选")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 页面\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" html(5)/css(3),前端页面相关技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /ui/\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/ui.png\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 技术\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("details")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 技术文档、教程、技巧、总结等文章\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /technology/\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/other.png\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 文章列表显示方式: detailed 默认,显示详细版文章列表(包括作者、分类、标签、摘要、分页等)| simple => 显示简约版文章列表(仅标题和日期)| none 不显示文章列表")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# postList: detailed")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# simplePostListLength: 10 # 简约版文章列表显示的文章数量,默认10。(仅在postList设置为simple时生效)")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# hideRightBar: true # 是否隐藏右侧边栏 (v1.11.2+)")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),e("p",[t._v("一些字段还是沿用"),e("a",{attrs:{href:"https://vuepress.vuejs.org/zh/theme/default-theme-config.html#%E9%A6%96%E9%A1%B5",target:"_blank",rel:"noopener noreferrer"}},[t._v("默认主题"),e("OutboundLink")],1),t._v("的,这里只对修改的地方做一个补充。")]),t._v(" "),e("h3",{attrs:{id:"bannerbg"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bannerbg"}},[t._v("#")]),t._v(" bannerBg")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("string")])]),t._v(" "),e("li",[t._v("可选参数:\n"),e("ul",[e("li",[e("code",[t._v("auto")]),t._v(" 自动背景,一般会显示网格纹背景,如果在"),e("code",[t._v("config.js")]),t._v("设置了"),e("code",[t._v("bodyBgImg")]),t._v("时则无背景")]),t._v(" "),e("li",[e("code",[t._v("none")]),t._v(" 无背景")]),t._v(" "),e("li",[e("code",[t._v("<大图地址>")]),t._v(",如"),e("code",[t._v("/img/bg.jpeg")])]),t._v(" "),e("li",[e("code",[t._v("background: <自定义背景样式>")]),t._v(",如"),e("code",[t._v("background: blue")])])])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("auto")])])]),t._v(" "),e("h3",{attrs:{id:"features"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[t._v("#")]),t._v(" features")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("{title: string, details: string, link?: string, imgUrl?: string}[]")])])]),t._v(" "),e("p",[t._v("features是在banner栏显示的特性描述,主题添加了图片的展示和点击跳转的链接")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("features[index].link")]),t._v(" 当前feature跳转的链接,可选")]),t._v(" "),e("li",[e("strong",[t._v("features[index].imgUrl")]),t._v(" 当前feature的图片地址,可选")])]),t._v(" "),e("h3",{attrs:{id:"postlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#postlist"}},[t._v("#")]),t._v(" postList")]),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("'detailed' | 'simple' | 'none'")])]),t._v(" "),e("li",[t._v("可选参数:\n"),e("ul",[e("li",[e("code",[t._v("detailed")]),t._v(" 显示详细版文章列表(包括标题、日期、作者、分类、标签、摘要、分页等)")]),t._v(" "),e("li",[e("code",[t._v("simple")]),t._v(" 显示简约版文章列表(仅标题和日期)")]),t._v(" "),e("li",[e("code",[t._v("none")]),t._v(" 不显示文章列表")])])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("detailed")])])]),t._v(" "),e("p",[t._v("首页内容中的文章列表显示方式")]),t._v(" "),e("h3",{attrs:{id:"simplepostlistlength"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#simplepostlistlength"}},[t._v("#")]),t._v(" simplePostListLength "),e("Badge",{attrs:{text:"v1.5.1 +"}})],1),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("number")])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("10")])])]),t._v(" "),e("p",[t._v("简约版文章列表显示的文章数量,默认"),e("code",[t._v("10")]),t._v("。(仅在"),e("code",[t._v("postList")]),t._v("设置为"),e("code",[t._v("simple")]),t._v("时生效)")]),t._v(" "),e("h3",{attrs:{id:"hiderightbar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hiderightbar"}},[t._v("#")]),t._v(" hideRightBar "),e("Badge",{attrs:{text:"v1.11.2 +"}})],1),t._v(" "),e("ul",[e("li",[t._v("类型:"),e("code",[t._v("boolean")])]),t._v(" "),e("li",[t._v("默认: "),e("code",[t._v("false")])])]),t._v(" "),e("p",[t._v("是否隐藏右侧边栏")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),e("p",[t._v("原默认主题首页的footer字段已改到"),e("code",[t._v("config.js")]),t._v("文件里设置")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/25.de1c1c00.js b/neutrino-proxy/assets/js/25.de1c1c00.js new file mode 100644 index 00000000..51c0c650 --- /dev/null +++ b/neutrino-proxy/assets/js/25.de1c1c00.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{390:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("一个比较完整的front matter示例:")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 标题\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token datetime number"}},[t._v("2020-02-21 14:40:19")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("permalink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /pages/a1bc87\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("categories")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 分类1\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 分类2\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tags")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" 标签1\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("titleTag")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 原创 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# v1.9.0+")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("comment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("editLink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("author")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 作者\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" https"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxx.com\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sticky")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("h2",{attrs:{id:"配置项"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置项"}},[t._v("#")]),t._v(" 配置项")]),t._v(" "),a("p",[t._v("自动生成的front matter字段包括title、date、permalink、categories、tags,这里就不再重复赘述,参考:"),a("RouterLink",{attrs:{to:"/pages/088c16/"}},[t._v("自动生成front matter")])],1),t._v(" "),a("h3",{attrs:{id:"titletag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#titletag"}},[t._v("#")]),t._v(" titleTag "),a("Badge",{attrs:{text:"v1.9.0 +"}})],1),t._v(" "),a("ul",[a("li",[t._v("用于给标题添加 "),a("code",[t._v("原创")]),t._v("、"),a("code",[t._v("转载")]),t._v(" 、"),a("code",[t._v("优质")]),t._v("、"),a("code",[t._v("推荐")]),t._v(" 等自定义标记。")])]),t._v(" "),a("p",[t._v("添加了标题标记的文章,在文章页和文章列表、最近更新栏、归档页的文章标题都会显示此标记。")]),t._v(" "),a("h3",{attrs:{id:"sidebar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sidebar"}},[t._v("#")]),t._v(" sidebar")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示侧边栏")]),t._v(" "),a("li",[a("code",[t._v("auto")]),t._v(" 显示自动侧边栏(只包含本文标题和子标题)")])]),t._v(" "),a("h3",{attrs:{id:"article"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#article"}},[t._v("#")]),t._v(" article")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 判定当前页面为非文章页")])]),t._v(" "),a("p",[t._v("对于非文章页,如目录页、关于、友情链接等自定义页面,需要设置此项。设置之后这个页面将被认定为非文章页,不显示面包屑和作者、时间,不显示最近更新栏,不会参与到最近更新文章的数据计算中。")]),t._v(" "),a("h3",{attrs:{id:"comment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#comment"}},[t._v("#")]),t._v(" comment")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示评论区,这是"),a("a",{attrs:{href:"https://github.com/dongyuanxin/vuepress-plugin-comment",target:"_blank",rel:"noopener noreferrer"}},[t._v("评论插件"),a("OutboundLink")],1),t._v("的一个配置")])]),t._v(" "),a("h3",{attrs:{id:"editlink"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#editlink"}},[t._v("#")]),t._v(" editLink")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("false")]),t._v(" 不显示编辑链接")])]),t._v(" "),a("h3",{attrs:{id:"author"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[t._v("#")]),t._v(" author")]),t._v(" "),a("ul",[a("li",[t._v("author.name 作者名称")]),t._v(" "),a("li",[t._v("author.link 作者链接")])]),t._v(" "),a("p",[t._v("指定当前页面的作者信息,如没有作者链接时可以这样:"),a("code",[t._v("author: 作者名称")])]),t._v(" "),a("h3",{attrs:{id:"sticky-置顶"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sticky-置顶"}},[t._v("#")]),t._v(" sticky (置顶)")]),t._v(" "),a("ul",[a("li",[t._v("类型: "),a("code",[t._v("number")])]),t._v(" "),a("li",[t._v("排序:允许有多个置顶文章,按照 "),a("code",[t._v("1, 2, 3, ...")]),t._v(" 来降低置顶文章的排列优先级")])]),t._v(" "),a("p",[t._v("文章置顶,设置了此项将在首页详细版文章列表中处于置顶位置。")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/26.a9272eda.js b/neutrino-proxy/assets/js/26.a9272eda.js new file mode 100644 index 00000000..3a69ebb1 --- /dev/null +++ b/neutrino-proxy/assets/js/26.a9272eda.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{391:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"目录页说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#目录页说明"}},[t._v("#")]),t._v(" 目录页说明")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),a("p",[t._v("目录页数据需要依赖于结构化的侧边栏数据,就是说你需要在"),a("code",[t._v("config.js")]),t._v("配置 "),a("code",[t._v("sidebar: 'structuring'")]),t._v(" 或 "),a("code",[t._v("sidebar: { mode: 'structuring', collapsable: false}")]),t._v(" 才能实现目录页数据的获取。")])]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("目录页文件("),a("code",[t._v(".md")]),t._v("文件)可以放置在"),a("code",[t._v("二级目录")]),t._v("、"),a("code",[t._v("三级目录")]),t._v("和"),a("code",[t._v("四级目录")]),t._v("。("),a("RouterLink",{attrs:{to:"/pages/33d574/#级别说明"}},[t._v("级别说明")]),t._v(")")],1),t._v(" "),a("li",[t._v("如果你不想在侧边栏显示目录页,你可以在"),a("code",[t._v("一级目录")]),t._v("中单独创建一个文件夹放置你的目录页("),a("code",[t._v(".md")]),t._v("文件),并在front matter中设置"),a("code",[t._v("sidebar: false")]),t._v("。")]),t._v(" "),a("li",[t._v("如果你想让目录页和其他页面一起出现在侧边栏,你可以和其他页面共同放置在相应的文件夹。(不要设置"),a("code",[t._v("sidebar: false")]),t._v(")")]),t._v(" "),a("li",[t._v("参照下面的示例配置好front matter,然后就可以在导航栏或首页添加目录页链接了。")])])]),t._v(" "),a("p",[a("strong",[t._v("示例")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("pageComponent")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 使用页面组件")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Catalogue "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 组件名:Catalogue => 目录页组件")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 组件所需数据")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("path")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 01.学习笔记/01.前端 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 设置为`docs/`下面的某个文件夹相对路径,如‘01.学习笔记/01.前端’ 或 ’01.学习笔记‘ (有序号的要带序号)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("imgUrl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /img/web.png "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 目录页内的图片")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("description")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" JavaScript、ES6、Vue框架等前端技术 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 目录描述(可加入a标签)")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("title")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 前端 "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 页面标题")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token datetime number"}},[t._v("2020-01-12 11:51:53")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 创建日期")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("permalink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /note/javascript "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 永久链接")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sidebar")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示侧边栏")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("article")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不是文章页 (不显示面包屑栏、最近更新栏等)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("comment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示评论栏")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("editLink")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 不显示编辑按钮")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("---")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),a("p",[t._v("配置好目录页之后,点击文章页的面包屑将会跳转到目录页。")])]),t._v(" "),a("h2",{attrs:{id:"配置项"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#配置项"}},[t._v("#")]),t._v(" 配置项")]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-name"}},[t._v("#")]),t._v(" pageComponent.name")]),t._v(" "),a("ul",[a("li",[t._v("组件名,必需")]),t._v(" "),a("li",[t._v("使用目录页时 "),a("strong",[t._v("必须")]),t._v(" 设置为"),a("code",[t._v("Catalogue")])])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data"}},[t._v("#")]),t._v(" pageComponent.data")]),t._v(" "),a("ul",[a("li",[t._v("组件所需数据,必需")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-path"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-path"}},[t._v("#")]),t._v(" pageComponent.data.path")]),t._v(" "),a("ul",[a("li",[t._v("要为其生成目录页的文件夹的相对路径,必需")]),t._v(" "),a("li",[t._v("必须是在"),a("code",[t._v("docs")]),t._v("目录底下的文件夹相对路径")]),t._v(" "),a("li",[t._v("示例:"),a("code",[t._v("01.学习笔记")]),t._v("或"),a("code",[t._v("01.学习笔记/01.前端")]),t._v("(有序号的要带序号)")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),a("p",[t._v("在"),a("code",[t._v("v1.8.2")]),t._v("版本之前,没有"),a("code",[t._v("path")]),t._v("属性,使用"),a("code",[t._v("key")]),t._v("代替。但"),a("code",[t._v("key")]),t._v("只支持指定"),a("code",[t._v("一级目录")]),t._v("的文件夹名称。")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-imgurl"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-imgurl"}},[t._v("#")]),t._v(" pageComponent.data.imgUrl")]),t._v(" "),a("ul",[a("li",[t._v("目录页内的图片,可选。(v1.9.4之前必填)")]),t._v(" "),a("li",[t._v("图片尺寸在页面中显示为80px*80px")])]),t._v(" "),a("h3",{attrs:{id:"pagecomponent-data-description"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pagecomponent-data-description"}},[t._v("#")]),t._v(" pageComponent.data.description")]),t._v(" "),a("ul",[a("li",[t._v("目录描述,必需")]),t._v(" "),a("li",[t._v("可加a标签(如需加入a标签时,标签内部的引号请使用单引号)")])]),t._v(" "),a("h2",{attrs:{id:"如何在导航栏中添加目录页链接"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何在导航栏中添加目录页链接"}},[t._v("#")]),t._v(" 如何在导航栏中添加目录页链接")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// config.js")]),t._v("\nmodule"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("themeConfig")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("nav")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 没有二级导航时可以直接添加")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'目录页'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/web/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 有二级导航时")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'页面'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/ui/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//目录页, vdoing主题新增的配置项,有二级导航时,可以点击一级导航跳到目录页")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("items")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HTML'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/pages/11/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("text")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'CSS'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("link")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/pages/22/'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("参考:"),a("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/docs/.vuepress/config/nav.js",target:"_blank",rel:"noopener noreferrer"}},[t._v(".vuepress/config/nav.js"),a("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/27.d61af734.js b/neutrino-proxy/assets/js/27.d61af734.js new file mode 100644 index 00000000..8400e644 --- /dev/null +++ b/neutrino-proxy/assets/js/27.d61af734.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{392:function(t,s,n){"use strict";n.r(s);var a=n(14),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",[t._v("文章摘要会显示于首页的详细版文章列表中,在编写文章时("),s("code",[t._v(".md")]),t._v("文件中)在合适的位置添加一个"),s("code",[t._v("\x3c!-- more --\x3e")]),t._v("注释。注释前面的内容将会暴露在摘要中。")]),t._v(" "),s("p",[t._v("示例:")]),t._v(" "),s("div",{staticClass:"language-md extra-class"},[s("pre",{pre:!0,attrs:{class:"language-md"}},[s("code",[s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("#")]),t._v(" 如何根据系统主题自动响应CSS深色模式")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token url"}},[s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("["),s("span",{pre:!0,attrs:{class:"token content"}},[t._v("Dark")]),t._v("]("),s("span",{pre:!0,attrs:{class:"token url"}},[t._v("https://fastly.jsdelivr.net/gh/xugaoyi/image_store/blog/20200427163531.jpg")]),t._v(")")]),t._v("\n\n很多人喜欢选择APP或网站中的深色模式,也许他们更喜欢这样的外观,或者他们想让自己的眼睛免受疲劳。这篇文章将告诉你如何在网站中实现一个自动的CSS深色模式,根据访客的系统主题来自动响应。\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("\x3c!-- more --\x3e")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("##")]),t._v(" CSS 深色模式 (Dark Mode)")]),t._v("\n\n...\n\n")])])]),s("p",[t._v("如示例的内容,在"),s("code",[t._v("\x3c!-- more --\x3e")]),t._v("注释前面的除了标题之外所有内容将显示到摘要中。摘要在文章列表的显示效果如下:\n")]),s("p",{attrs:{align:"center"}},[s("img",{attrs:{src:"https://fastly.jsdelivr.net/gh/xugaoyi/image_store/blog/20200513165502.png",width:"600"}})]),s("p"),t._v(" "),s("p",[t._v("值得注意的是摘要的内容也是文章内容的一部分,会显示在文章详情页中。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/28.7dfe2be6.js b/neutrino-proxy/assets/js/28.7dfe2be6.js new file mode 100644 index 00000000..5e452149 --- /dev/null +++ b/neutrino-proxy/assets/js/28.7dfe2be6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{393:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"主题样式变量"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#主题样式变量"}},[t._v("#")]),t._v(" 主题样式变量")]),t._v(" "),s("p",[t._v("下面是vdoing主题使用的css变量,你可以在"),s("code",[t._v(".vuepress/styles/palette.styl")]),t._v("修改这些变量覆盖它们:")]),t._v(" "),s("div",{staticClass:"language-stylus extra-class"},[s("pre",{pre:!0,attrs:{class:"language-stylus"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//***vdoing主题-CSS变量***//")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 颜色")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$bannerTextColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 首页banner区(博客标题区)的文本颜色")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$accentColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#11A8CD")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$activeColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#ff5722")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$arrowBgColor")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#ccc")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 布局")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$navbarHeight")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3.6")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$sidebarWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$contentWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("860")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$homePageWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1100")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$rightMenuWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("230")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("px")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 右侧菜单")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable-declaration"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$lineNumbersWrapperWidth")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.5")]),s("span",{pre:!0,attrs:{class:"token unit"}},[t._v("rem")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 浅色模式")]),t._v("\n.theme-mode-light")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#f4f4f4")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("255")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".9")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#004050")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".15")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块浅色主题")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#f6f6f6")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#525252")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeLight")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 代码块深色主题")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// --codeBg: #252526")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// --codeColor: #fff")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// codeThemeDark()")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 深色模式")]),t._v("\n.theme-mode-dark")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("39")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("39")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("43")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("34")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("140")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("140")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("150")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#2C2C3A")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#252526")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeDark")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token selector"}},[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 阅读模式")]),t._v("\n.theme-mode-read")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--bodyBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgb")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("240")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("240")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("208")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--mainBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--sidebarBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".8")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--blurBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("245")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("213")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".9")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#004050")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--textLightenColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#0085AD")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--borderColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rgba")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v(".15")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeBg")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#282c34")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property-declaration"}},[s("span",{pre:!0,attrs:{class:"token property"}},[t._v("--codeColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token hexcode"}},[t._v("#fff")])]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token func"}},[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("codeThemeDark")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),t._v("\n")])])]),s("p",[t._v("上面的变量值可能不是最新的,最新的变量值可查看:"),s("a",{attrs:{href:"https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/theme-vdoing/styles/palette.styl",target:"_blank",rel:"noopener noreferrer"}},[t._v("palette.styl"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"样式修改与适配"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#样式修改与适配"}},[t._v("#")]),t._v(" 样式修改与适配")]),t._v(" "),s("p",[t._v("当你想修改主题某个地方的样式时,或者你在给博客添加了一些新的模块或插件,发现样式和主题的样式不协调时,都可以在"),s("code",[t._v(".vuepress/styles/index.styl")]),t._v("\n添加css样式来做修改。\n需要注意的是,你在自己写的css样式中,请尽量使用主题提供的变量来进行适配。")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("小技巧")]),t._v(":当你发现自己写的css样式优先级没有原来的样式高时,可以在样式后面添加"),s("code",[t._v("!improtant")]),t._v("后缀,使你的样式优先级是最高的。")])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/29.ec35ef30.js b/neutrino-proxy/assets/js/29.ec35ef30.js new file mode 100644 index 00000000..b46e4882 --- /dev/null +++ b/neutrino-proxy/assets/js/29.ec35ef30.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{394:function(e,s,r){"use strict";r.r(s);var t=r(14),u=Object(t.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("p",[e._v("评论栏推荐使用vuepress插件的方式来导入,这里推荐一些vuepress的评论插件,使用方法查阅相应的文档。")]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-comment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-comment"}},[e._v("#")]),e._v(" vuepress-plugin-comment")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/dongyuanxin/vuepress-plugin-comment",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-comment"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-vssue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-vssue"}},[e._v("#")]),e._v(" vuepress-plugin-vssue")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://vssue.js.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-vssue"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"vuepress-plugin-vssue-global"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vuepress-plugin-vssue-global"}},[e._v("#")]),e._v(" vuepress-plugin-vssue-global")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/u2sb/vuepress-plugin-vssue-global",target:"_blank",rel:"noopener noreferrer"}},[e._v("vuepress-plugin-vssue-global"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"twikoo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#twikoo"}},[e._v("#")]),e._v(" Twikoo")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/imaegoo/twikoo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twikoo"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);s.default=u.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/3.31c9497d.js b/neutrino-proxy/assets/js/3.31c9497d.js new file mode 100644 index 00000000..c11f0849 --- /dev/null +++ b/neutrino-proxy/assets/js/3.31c9497d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{321:function(t,e,n){},369:function(t,e,n){"use strict";n(321)},408:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:(t,{props:e,slots:n})=>t("span",{class:["badge",e.type],style:{verticalAlign:e.vertical}},e.text||n().default)},a=(n(369),n(14)),p=Object(a.a)(i,void 0,void 0,!1,null,"d5affa18",null);e.default=p.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/30.43ea93fb.js b/neutrino-proxy/assets/js/30.43ea93fb.js new file mode 100644 index 00000000..5ee9688d --- /dev/null +++ b/neutrino-proxy/assets/js/30.43ea93fb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{396:function(r,e,t){"use strict";t.r(e);var _=t(14),v=Object(_.a)({},(function(){var r=this,e=r._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[e("h1",{attrs:{id:"🎋代码分支说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🎋代码分支说明"}},[r._v("#")]),r._v(" 🎋代码分支说明")]),r._v(" "),e("ul",[e("li",[r._v("dev:常规开发分支,日常的开发、Bug修复、提交PR都在此分支")]),r._v(" "),e("li",[r._v("feature/xxx:特征分支,一些试验性开发、提交PR都在此分支,xxx可自行取一个有意义的名称")]),r._v(" "),e("li",[r._v("release/xxx:发行版分支,作为阶段性成果、重大更新的版本固化分支。受保护,不允许任何提交。")]),r._v(" "),e("li",[r._v("master:主分支,定期同步最新代码,目前仅支持本人(傲世孤尘/雨韵诗泽)提交。")])]),r._v(" "),e("h1",{attrs:{id:"✊贡献的方式"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#✊贡献的方式"}},[r._v("#")]),r._v(" ✊贡献的方式")]),r._v(" "),e("p",[r._v("包括,但不限于以下形式:")]),r._v(" "),e("ul",[e("li",[r._v("提交"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1)]),r._v(" "),e("li",[r._v("参与"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1),r._v("解决的必要性、解决方案的讨论、给出建设性的意见")]),r._v(" "),e("li",[r._v("领取"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[r._v("issues"),e("OutboundLink")],1),r._v(" 并完成开发、提交PR")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("完善代码注释")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("增加测试代码")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("优化现有代码")]),r._v(" "),e("li",[r._v("为"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("本项目"),e("OutboundLink")],1),r._v("优化操作体验")]),r._v(" "),e("li",[r._v("通过公众号、博客、贴吧、论坛等形式分享/宣传中微子代理")]),r._v(" "),e("li",[r._v("丰富项目文档,包括使用过程中踩过的坑、需要优化的点、具体问题的解决方法等")])]),r._v(" "),e("h1",{attrs:{id:"🧬贡献代码的步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🧬贡献代码的步骤"}},[r._v("#")]),r._v(" 🧬贡献代码的步骤")]),r._v(" "),e("ul",[e("li",[r._v("在Gitee上fork项目到自己的仓库")]),r._v(" "),e("li",[r._v("将fork后的自己仓库的项目clone到本地")]),r._v(" "),e("li",[r._v("拉取dev分支最新代码,并修改")]),r._v(" "),e("li",[r._v("commit并push到自己的仓库")]),r._v(" "),e("li",[r._v("登录Gitee在的仓库上可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。")]),r._v(" "),e("li",[r._v("等待合并")])]),r._v(" "),e("h1",{attrs:{id:"📐pr的规范"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#📐pr的规范"}},[r._v("#")]),r._v(" 📐PR的规范")]),r._v(" "),e("blockquote",[e("p",[r._v("你可能发现有的代码并不符合这个规范,但我们后续都会朝着这个方向迈进。后续我们会逐步全面规范化,请先保证新提交的代码满足以下要求:")])]),r._v(" "),e("ul",[e("li",[r._v("注释完备,尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,必要时请添加单元测试,如果愿意,也可以加上你的大名。")]),r._v(" "),e("li",[r._v("原则上,不允许自行添加第三方依赖库。若确有必要,请先和项目负责人沟通达成一致。")]),r._v(" "),e("li",[r._v("对现有代码的优化,请在注释中说明原因。")]),r._v(" "),e("li",[r._v("如果涉及到数据库的变更,则至少需要做到以下几点:\n"),e("ul",[e("li",[r._v("h2、mysql下均测试通过")]),r._v(" "),e("li",[r._v("在"),e("code",[r._v("./neutrino-proxy-server/src/main/resource/sql")]),r._v("下维护更新对应的表结构sql文件")]),r._v(" "),e("li",[r._v("对于新增的表,维护必要的初始化数据")]),r._v(" "),e("li",[r._v("在对应的mysql、h2的update目录下,维护SQL变更记录,确保SQL执行测试通过")])])])])])}),[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/31.3d915a65.js b/neutrino-proxy/assets/js/31.3d915a65.js new file mode 100644 index 00000000..6bc24307 --- /dev/null +++ b/neutrino-proxy/assets/js/31.3d915a65.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{397:function(t,e,n){"use strict";n.r(e);var s=n(14),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"主要目录、文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#主要目录、文件"}},[t._v("#")]),t._v(" 主要目录、文件")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("├── assets (资源文件)\n├── docs (项目相关的一些文档)\n├── neutrino-proxy-admin (管理后台前端项目,基于vue-element-admin)\n├── neutrino-proxy-client (基于netty的代理客户端,用于和服务端交互、转发内网数据)\n├── neutrino-proxy-core (代理相关的公共代码(协议、常量))\n├── neutrino-proxy-server (基于netty的代理服务端,用于和客户段交互,将客户端转发的内网数据转发至外网端口)\n├── neutrino-proxy-vuepress (中微子代理官网文档)\n├── scripts (常用的编译、打包脚本)\n├── Milestone.md (里程碑事件节点)\n├── VLog.md (版本变更记录)\n└── todolist.MD (近期的开发计划)\n")])])]),e("h1",{attrs:{id:"代码分支说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#代码分支说明"}},[t._v("#")]),t._v(" 代码分支说明")]),t._v(" "),e("ul",[e("li",[t._v("dev:常规开发分支,日常的开发、Bug修复、提交PR都在此分支")]),t._v(" "),e("li",[t._v("feature/xxx:特征分支,一些试验性开发、提交PR都在此分支,xxx可自行取一个有意义的名称")]),t._v(" "),e("li",[t._v("release/xxx:发行版分支,作为阶段性成果、重大更新的版本固化分支。受保护,不允许任何提交。")]),t._v(" "),e("li",[t._v("master:主分支,定期同步最新代码,目前仅支持本人(傲世孤尘/雨韵诗泽)提交。")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/32.ebdd578e.js b/neutrino-proxy/assets/js/32.ebdd578e.js new file mode 100644 index 00000000..60793397 --- /dev/null +++ b/neutrino-proxy/assets/js/32.ebdd578e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{398:function(e,v,_){"use strict";_.r(v);var n=_(14),a=Object(n.a)({},(function(){var e=this,v=e._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[v("h1",{attrs:{id:"代理实现中涉及的几类channel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理实现中涉及的几类channel"}},[e._v("#")]),e._v(" 代理实现中涉及的几类Channel")]),e._v(" "),v("h2",{attrs:{id:"指令通道-cmdchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#指令通道-cmdchannel"}},[e._v("#")]),e._v(" 指令通道(CmdChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护客户端与服务端之间的指令通讯,由客户端启动后向服务端发起连接请求,服务端验证license成功后连接建立。")]),e._v(" "),v("li",[e._v("服务端维护第一个CmdChannel的映射表,key为licenseId。服务端可以根据licenseId,向指定的客户端指令通道发布指令。")]),e._v(" "),v("li",[e._v("该通道建立完成后,服务端会将该license授权的外网映射端口打开,等待用户访问。正常情况下,只要客户端不下线,该通道一直可用。")]),e._v(" "),v("li",[e._v("然后服务端维护第二个CmdChannel的映射表,key为服务端外网端口。服务端可以根据指定的外网端口,向指定的客户端指令通道发布指令。")])]),e._v(" "),v("h2",{attrs:{id:"用户访问通道-visitorchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#用户访问通道-visitorchannel"}},[e._v("#")]),e._v(" 用户访问通道(VisitorChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护访问者与服务端端口之间的通讯,由访问者向服务端映射的外网端口发起请求开始建立,具体断开时机由实际的被代理的\n协议决定。")]),e._v(" "),v("li",[e._v("如HTTP/1.0下,用户向该端口发起请求,响应结束后,该通道随之关闭,下一次发起请求后,重新建立新的连接。")]),e._v(" "),v("li",[e._v("该连接建立后,服务端会向该外网端口映射的指令通道发送"),v("code",[e._v("Connect")]),e._v("指令,传输该外网端口需要代理的内网信息,\n如:"),v("code",[e._v("127.0.0.1:3306")]),e._v("。")])]),e._v(" "),v("h2",{attrs:{id:"被代理服务的实际通道-realserverchannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#被代理服务的实际通道-realserverchannel"}},[e._v("#")]),e._v(" 被代理服务的实际通道(RealServerChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责维护客户端与实际被代理服务之间的通讯,当客户端接收到服务端的"),v("code",[e._v("Connect")]),e._v("指令后,客户端便会建立该通道。")])]),e._v(" "),v("h2",{attrs:{id:"代理数据传输的通道-proxychannel"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理数据传输的通道-proxychannel"}},[e._v("#")]),e._v(" 代理数据传输的通道(ProxyChannel)")]),e._v(" "),v("ul",[v("li",[e._v("该channel负责完成内网被代理服务与代理服务端之间的数据转发任务。")]),e._v(" "),v("li",[e._v("每个客户端维护一个"),v("code",[e._v("ProxyChannel")]),e._v("的缓存队列,需要时从该队列中取,当取不到时,直接新建一个"),v("code",[e._v("ProxyChannel")]),e._v("返回。\n当一个"),v("code",[e._v("ProxyChannel")]),e._v("实例用完后,需要归还到缓存队列中("),v("code",[e._v("ProxyChannel")]),e._v("收到"),v("code",[e._v("DisConnect")]),e._v("指令时)。")]),e._v(" "),v("li",[e._v("当"),v("code",[e._v("RealServerChannel")]),e._v("建立完成后,就会获取相关联的"),v("code",[e._v("ProxyChannel")]),e._v(",并与其绑定。设置"),v("code",[e._v("RealServerChannel")]),e._v("为\n可读状态。然后通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Connect")]),e._v("指令。")])]),e._v(" "),v("h1",{attrs:{id:"代理实现流程"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#代理实现流程"}},[e._v("#")]),e._v(" 代理实现流程")]),e._v(" "),v("h2",{attrs:{id:"_1、服务连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1、服务连接阶段"}},[e._v("#")]),e._v(" 1、服务连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("1.1、客户端根据是否需要使用SSL,选择对应的服务端端口发起连接,建立"),v("code",[e._v("CmdChannel")]),e._v("。")]),e._v(" "),v("li",[e._v("1.2、客户端根据用户输入或配置文件获取"),v("code",[e._v("license")]),e._v(",并携带"),v("code",[e._v("license")]),e._v("通过"),v("code",[e._v("CmdChannel")]),e._v("向服务端发送"),v("code",[e._v("Auth")]),e._v("指令。")]),e._v(" "),v("li",[e._v("1.3、服务端通过"),v("code",[e._v("CmdChannel")]),e._v("接收到来自客户端的"),v("code",[e._v("Auth")]),e._v("指令。若验证"),v("code",[e._v("license")]),e._v("有效,则建立"),v("code",[e._v("licenseId")]),e._v("与"),v("code",[e._v("CmdChannel")]),e._v("的映射缓存、\n外网端口与"),v("code",[e._v("CmdChannel")]),e._v("的映射缓存。并启动服务端代理端口,等待用户连接。")])]),e._v(" "),v("h2",{attrs:{id:"_2、用户连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2、用户连接阶段"}},[e._v("#")]),e._v(" 2、用户连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("2.1、用户向服务端代理的外网端口发起请求,服务端建立"),v("code",[e._v("VisitorChannel")]),e._v("。")]),e._v(" "),v("li",[e._v("2.2、根据外网端口查找"),v("code",[e._v("CmdChannel")]),e._v(",若不存在有效的"),v("code",[e._v("CmdChannel")]),e._v(",则关闭该"),v("code",[e._v("VisitorChannel")]),e._v("。否则,\n设置"),v("code",[e._v("VisitorChannel")]),e._v("为不可读,并携带内网映射信息(如:"),v("code",[e._v("127.0.0.1:3306")]),e._v(")通过"),v("code",[e._v("CmdChannel")]),e._v("向客户端发送"),v("code",[e._v("Connect")]),e._v("指令。")])]),e._v(" "),v("h2",{attrs:{id:"_3、实际被代理服务连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_3、实际被代理服务连接阶段"}},[e._v("#")]),e._v(" 3、实际被代理服务连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("3.1、客户端通过"),v("code",[e._v("CmdChannel")]),e._v("接收到服务端的"),v("code",[e._v("Connect")]),e._v("指令。拿到需要代理的内网IP、端口号,向实际被\n代理服务发起连接请求,若连接失败,则通过"),v("code",[e._v("CmdChannel")]),e._v("向服务端发送"),v("code",[e._v("DisConnect")]),e._v("指令。建立"),v("code",[e._v("RealServerChannel")]),e._v("成功,设置"),v("code",[e._v("RealServerChannel")]),e._v("为不可读\n状态,并进入4.1阶段")])]),e._v(" "),v("h2",{attrs:{id:"_4、代理通道连接阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_4、代理通道连接阶段"}},[e._v("#")]),e._v(" 4、代理通道连接阶段")]),e._v(" "),v("ul",[v("li",[e._v("4.1、客户端通过"),v("code",[e._v("ProxyChannelQueue")]),e._v("获取或新建一个"),v("code",[e._v("ProxyChannel")]),e._v(",并将"),v("code",[e._v("RealServerChannel")]),e._v("与"),v("code",[e._v("ProxyChannel")]),e._v("进行绑定。")]),e._v(" "),v("li",[e._v("4.2、客户端通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Connect")]),e._v("指令。")]),e._v(" "),v("li",[e._v("4.3、服务端通过"),v("code",[e._v("ProxyChannel")]),e._v("通道收到来自客户端的"),v("code",[e._v("Connect")]),e._v("指令后,将"),v("code",[e._v("ProxyChannel")]),e._v("与对应的"),v("code",[e._v("VisitorChannel")]),e._v("进行绑定,并\n设置"),v("code",[e._v("VisitorChannel")]),e._v("为可读状态。")])]),e._v(" "),v("h2",{attrs:{id:"_5、数据传输阶段"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_5、数据传输阶段"}},[e._v("#")]),e._v(" 5、数据传输阶段")]),e._v(" "),v("ul",[v("li",[e._v("5.1、服务端通过"),v("code",[e._v("VisitorChannel")]),e._v("收到来自用户的请求数据,然后找到"),v("code",[e._v("VisitorChannel")]),e._v("绑定的"),v("code",[e._v("ProxyChannel")]),e._v(",\n通过"),v("code",[e._v("ProxyChannel")]),e._v("发送"),v("code",[e._v("Transfer")]),e._v("指令,并携带用户请求数据。")]),e._v(" "),v("li",[e._v("5.2、客户端通过"),v("code",[e._v("ProxyChannel")]),e._v("收到来自服务端的"),v("code",[e._v("Transfer")]),e._v("指令,取出用户请求数据。找到"),v("code",[e._v("ProxyChannel")]),e._v("绑定的"),v("code",[e._v("RealServerChannel")]),e._v(",\n通过"),v("code",[e._v("RealServerChannel")]),e._v("向被代理服务写入用户请求数据。")]),e._v(" "),v("li",[e._v("5.3、客户端通过"),v("code",[e._v("RealServerChannel")]),e._v("收到被代理服务响应的数据,找到"),v("code",[e._v("RealServerChannel")]),e._v("绑定的"),v("code",[e._v("ProxyChannel")]),e._v(",\n通过"),v("code",[e._v("ProxyChannel")]),e._v("向服务端发送"),v("code",[e._v("Transfer")]),e._v("指令,并携带响应数据。")]),e._v(" "),v("li",[e._v("5.4、服务端通过"),v("code",[e._v("ProxyChannel")]),e._v("收到来自客户端的"),v("code",[e._v("Transfer")]),e._v("指令,找到"),v("code",[e._v("ProxyChannel")]),e._v("绑定的"),v("code",[e._v("VisitorChannel")]),e._v(",\n通过"),v("code",[e._v("VisitorChannel")]),e._v("向用户端写入响应数据。")])])])}),[],!1,null,null,null);v.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/33.32f5fccd.js b/neutrino-proxy/assets/js/33.32f5fccd.js new file mode 100644 index 00000000..0a35dd0b --- /dev/null +++ b/neutrino-proxy/assets/js/33.32f5fccd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{399:function(t,e,l){"use strict";l.r(e);var i=l(14),a=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("日期")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("渠道")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("昵称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("备注")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-28")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("雪猫")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬吃肯德基")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-27")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("D")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬喝杯茶")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Simen")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("伟大的项目,尽点绵薄之力")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("KAI")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大佬加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-22")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("walking")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("好东西必须支持一下")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-21")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("洗最大的碗")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("中微子越来越强大,雨哥越来越富有")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-15")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("一杯香梨")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-12-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("支付宝收款码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("*平")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大佬继续加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("26263")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("姫野永遠")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-26")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("180")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Teacher Du")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-11-01")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Sun")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢大佬,请你喝杯奶茶[微笑]")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("杨娃娃")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Mark Isaac赵方丈")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("金额不大,开源感恩。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-11")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-10-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("海洋")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-31")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("失败女神")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-28")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("AdrianPteLtd.com-咨询")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("MaxKeyTop")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请大佬抽包烟")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-07-04")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("姫野永遠")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("16.8")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("迟迟🌱")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("加油")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-27")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Arno")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-25")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("zhujue888")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("小跟班")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("失败女神")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Admin")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("李阳")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开源无限好")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-09")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("罗宾")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-07")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("罗宾")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-06-03")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Admin")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("TYY")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("笑看")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-05-26")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("至少还有满天星光照耀你")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-23")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Yohanes")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-23")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("jam_lee")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!希望能支持域名映射")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("实习两年半")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2023-02-02")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("阳光很暖")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/34.9942da58.js b/neutrino-proxy/assets/js/34.9942da58.js new file mode 100644 index 00000000..8a16492d --- /dev/null +++ b/neutrino-proxy/assets/js/34.9942da58.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{400:function(t,e,l){"use strict";l.r(e);var i=l(14),a=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("日期")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("渠道")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("昵称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("备注")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-11-19")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("支付宝收款码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("2")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("*亮")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-10-06")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("碧云天")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-10-14")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("泛微eteams刘新东17699059661")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-09-04")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("8.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("lusen998")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-08-30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("吴忧吴虑")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-07-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("QuanJWS")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!看着很不错的样子,加油!")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-07-29")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("120")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("陈某")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-05-07")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("仲秀")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-04-16")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("暮光:城中城")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-04-03")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信转账")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("100")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("仲秀")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("大神,非常感谢")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("include")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信赞赏码")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("9")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("宗")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("麻烦了,最好能加一个返回公网IP。"),e("br"),t._v("不知道有没有几乎通用的方案")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-22")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("不允")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("请你吃外卖")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-03-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-02-12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-02-02")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("38.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("不请自来君")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-24")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Gitee捐助")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("唐吉诃德")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("感谢您的开源项目!是一个不错的项目!"),e("br"),t._v("希望继续完善界面UI的设计。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("shiyongsway")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("8.88")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("2024-01-17")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("微信红包")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("喜鸽小宝")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}})])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/35.cf7271d2.js b/neutrino-proxy/assets/js/35.cf7271d2.js new file mode 100644 index 00000000..01ee2e97 --- /dev/null +++ b/neutrino-proxy/assets/js/35.cf7271d2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{401:function(t,e,l){"use strict";l.r(e);var a=l(14),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"企业登记"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#企业登记"}},[t._v("#")]),t._v(" 企业登记")]),t._v(" "),e("p",[t._v("如果您所在的企业使用到了中微子代理,麻烦抽出宝贵的时间"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues/I6WC71",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击这里"),e("OutboundLink")],1),t._v("进行登记,这将会助力中微子代理走得更远。")]),t._v(" "),e("h2",{attrs:{id:"案例展示"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#案例展示"}},[t._v("#")]),t._v(" 案例展示")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("企业名称")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("logo")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("官网地址")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("使用人数")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("用途")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("北京吉威空间信息股份有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1681717113043198586/b7f0b6b3_8006959.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.geoway.com.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发环境的session会话同步与开发环境的对接测试华为云与微信等云端回调接口")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("悦邻供应链科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1684996781645413637/277d0b9b_5234431.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://yinghecloud.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("阿依瓦(北京)技术有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1684998300312143862/74a96cec_4788807.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://www.alva.com.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("50")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试,云端同步数据等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("常州裕景信息科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1688542732735699110/bb238481_2342807.jpeg",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("无")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("远程管理虚拟机,接口、数据库等功能调试")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("湖北楚商联盟金融信息服务有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1675831034400302128/3621dd88_9993534.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.chually.cn")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("10")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("开发及生产环境内网服务器VPN搭建,本地开发服务端口调试,云端同步数据等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("中科元景智能(深圳)有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1689584776864189267/d66c78a8_9373604.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("https://yjupi.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("20")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("本地开发连接测试环境及生产环境内网服务器,包含数据库、redis、模块服务等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("长沙小蜂科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1692156755102754023/c7d82730_1207310.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("无")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("1~3人")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("主要用于测试环境内网服务器,包含数据库,远程桌面等")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("江西六湛科技")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1694073479398767455/0f7570a7_10166803.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.liuzhankj.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("12")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("主要用于部署一些使用时长较短的项目")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("杭州艾佳智能科技有限公司")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[e("img",{attrs:{src:"https://foruda.gitee.com/images/1695608742879653626/314c72a4_5720492.png",alt:"logo"}})]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("http://www.ajaiot.com")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("12-16人")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("公司部分设备是通过udp通信的,对接调试设备,搭建测试环境服务网关的时候需要")])])])])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/36.9bd0c33b.js b/neutrino-proxy/assets/js/36.9bd0c33b.js new file mode 100644 index 00000000..9a248722 --- /dev/null +++ b/neutrino-proxy/assets/js/36.9bd0c33b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{402:function(_,v,e){"use strict";e.r(v);var t=e(14),r=Object(t.a)({},(function(){var _=this,v=_._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("h2",{attrs:{id:"_2-0-2"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-2"}},[_._v("#")]),_._v(" 2.0.2")]),_._v(" "),v("ul",[v("li",[_._v("bug修复\n"),v("ul",[v("li",[_._v("解决安全组在ipv6场景下误拦截导致域名映射访问不通的问题")]),_._v(" "),v("li",[_._v("解决native编译后,端口池批量删除报错的问题")]),_._v(" "),v("li",[_._v("解决客户端docker方式部署环境变量指定参数不生效的问题")]),_._v(" "),v("li",[_._v("服务端解决native下清理日志定时任务报错的问题")]),_._v(" "),v("li",[_._v("解决后台分页查询的已知问题")]),_._v(" "),v("li",[_._v("端口映射中的客户端ip字段加长一点,解决配置阿里云数据库域名字段不够的问题")]),_._v(" "),v("li",[_._v("解决服务端native部署时,访问后台用户列表,日志警告“you should use: nativeMetadata.registerField(field) at aot runtime”的问题")])])]),_._v(" "),v("li",[_._v("新增功能\n"),v("ul",[v("li",[_._v("新增后台域名管理,⽀持新增、修改、删除、禁⽤主域名,支持添加多级域名。")]),_._v(" "),v("li",[_._v("域名管理支持上传域名对应的SSL证书、⽀持设置强制HTTPS、⽀持域名映射⾃动加载对应的服务器证书。")]),_._v(" "),v("li",[_._v("端口映射支持选择切换不同的主域名,⽀持绑定多个⼦域名,单个端⼝⽀持绑定多个不同的主域名。")])])]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[v("strong",[_._v("域名和SSL证书的配置由配置文件配置改为后台域名管理页面配置。")])]),_._v(" "),v("li",[_._v("去掉了配置文件声明服务器端域名和证书的方式,改为通过页面进行管理,请注意自行进行数据迁移。")]),_._v(" "),v("li",[_._v("数据库新增"),v("code",[_._v("域名表")]),_._v("和"),v("code",[_._v("域名映射中间表")]),_._v(",修改了"),v("code",[_._v("端口映射表")]),_._v(",涉及到表结构变更,执行"),v("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/blob/master/neutrino-proxy-server/src/main/resources/sql/mysql/update/UPDATE-20240808.SQL",target:"_blank",rel:"noopener noreferrer"}},[_._v("增量SQL"),v("OutboundLink")],1)])])])]),_._v(" "),v("h2",{attrs:{id:"_2-0-1"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-1"}},[_._v("#")]),_._v(" 2.0.1")]),_._v(" "),v("ul",[v("li",[_._v("jdk版本升级为21")]),_._v(" "),v("li",[_._v("新增安全组模块,支持黑名单、白名单限制")]),_._v(" "),v("li",[_._v("支持对用户、license限速")]),_._v(" "),v("li",[_._v("修复HTTP(S)映射时使用tcp端口访问正常,使用域名访问偶现一直loading的问题")]),_._v(" "),v("li",[_._v("修复HTTP(S)映射时使用映射的域名上传文件时,连接中断的问题")]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[_._v("jdk版本升级为了jdk21,jar部署时请注意")]),_._v(" "),v("li",[_._v("涉及到表结构变更,执行"),v("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/blob/master/neutrino-proxy-server/src/main/resources/sql/mysql/update/UPDATE-20231215.SQL",target:"_blank",rel:"noopener noreferrer"}},[_._v("增量SQL"),v("OutboundLink")],1)])])])]),_._v(" "),v("h2",{attrs:{id:"_2-0-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_2-0-0"}},[_._v("#")]),_._v(" 2.0.0")]),_._v(" "),v("ul",[v("li",[_._v("solon版本升级为"),v("code",[_._v("2.5.11")])]),_._v(" "),v("li",[_._v("jdk版本升级为17")]),_._v(" "),v("li",[_._v("支持原生编译改造")]),_._v(" "),v("li",[_._v("默认支持的数据库由sqlite改为h2")]),_._v(" "),v("li",[_._v("升级须知:\n"),v("ul",[v("li",[_._v("jdk版本升级为了jdk17,jar部署时请注意")]),_._v(" "),v("li",[_._v("去掉了默认的sqlite数据库,改为了h2。如果之前使用sqlite,请自行处理数据迁移")]),_._v(" "),v("li",[_._v("配置文件做了较大调整,请参照官网使用须知中的"),v("code",[_._v("服务端配置")]),_._v("、"),v("code",[_._v("客户端配置")]),_._v("进行更新")])])])])])}),[],!1,null,null,null);v.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/37.71c8b009.js b/neutrino-proxy/assets/js/37.71c8b009.js new file mode 100644 index 00000000..7c63fe60 --- /dev/null +++ b/neutrino-proxy/assets/js/37.71c8b009.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{403:function(_,v,a){"use strict";a.r(v);var t=a(14),l=Object(t.a)({},(function(){var _=this,v=_._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("h2",{attrs:{id:"_1-9-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-9-0"}},[_._v("#")]),_._v(" 1.9.0")]),_._v(" "),v("ul",[v("li",[_._v("端口映射支持UDP协议")]),_._v(" "),v("li",[_._v("端口映射HTTP(S)新增打开网页按钮,优先使用域名打开")]),_._v(" "),v("li",[_._v("新增/编辑端口映射时端口占用检测功能屏蔽,解决docker下使用的各种问题")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-6"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-6"}},[_._v("#")]),_._v(" 1.8.6")]),_._v(" "),v("ul",[v("li",[_._v("端口映射选择端口支持分页")]),_._v(" "),v("li",[_._v("新增/更新端口映射,增加端口占用检测(端口映射编辑时,如果端口号没有变动,则不验证。避免出现端口映射正在使用时,无法更新端口映射其他信息的问题)")]),_._v(" "),v("li",[_._v("下拉搜索license,支持模糊搜索")]),_._v(" "),v("li",[_._v("license下拉用户搜索,支持模糊搜索")]),_._v(" "),v("li",[_._v("端口映射HTTP(S)新增打开网页按钮")]),_._v(" "),v("li",[_._v("客户端断开连接时,记录日志空指针异常问题修复")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-5"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-5"}},[_._v("#")]),_._v(" 1.8.5")]),_._v(" "),v("ul",[v("li",[_._v("后台端口池管理支持批量删除")]),_._v(" "),v("li",[_._v("端口映射下拉选择端口支持搜索")]),_._v(" "),v("li",[_._v("客户端/服务端配置增加心跳日志开关,有需要时开启,方便排查问题")]),_._v(" "),v("li",[_._v("客户端/服务端读写超时逻辑微调")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-4"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-4"}},[_._v("#")]),_._v(" 1.8.4")]),_._v(" "),v("ul",[v("li",[_._v("增加对mariadb的支持")]),_._v(" "),v("li",[_._v("服务端/客户端,支持配置文件、启动参数指定日志级别")]),_._v(" "),v("li",[_._v("客户端支持配置文件指定重连间隔,是否开启无限重连")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-3"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-3"}},[_._v("#")]),_._v(" 1.8.3")]),_._v(" "),v("ul",[v("li",[_._v("客户端重连优化")]),_._v(" "),v("li",[_._v("服务端验证客户端身份逻辑优化")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-2"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-2"}},[_._v("#")]),_._v(" 1.8.2")]),_._v(" "),v("ul",[v("li",[_._v("增加HTTPS的支持。")])]),_._v(" "),v("h2",{attrs:{id:"_1-8-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-8-0"}},[_._v("#")]),_._v(" 1.8.0")]),_._v(" "),v("ul",[v("li",[_._v("端口映射支持选择协议")]),_._v(" "),v("li",[_._v("HTTP协议下映射支持配置子域名(前提是server端配置了域名)")])]),_._v(" "),v("h2",{attrs:{id:"_1-7-1"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-7-1"}},[_._v("#")]),_._v(" 1.7.1")]),_._v(" "),v("ul",[v("li",[_._v("针对管理后台各页面的排序、搜索条件的优化")]),_._v(" "),v("li",[_._v("增加端口池分组、相关的端口映射优化")]),_._v(" "),v("li",[_._v("增加了报表管理模块:用户流量报表、license流量报表、用户流量月度明细、license流量月度明细")]),_._v(" "),v("li",[_._v("完成首页图表展示:license统计、端口映射统计、今日流量统计、汇总流量统计、最近15日流量折线图")])]),_._v(" "),v("h2",{attrs:{id:"_1-7-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-7-0"}},[_._v("#")]),_._v(" 1.7.0")]),_._v(" "),v("ul",[v("li",[_._v("底层框架更换为Solon + MybatisPlus")])]),_._v(" "),v("h2",{attrs:{id:"_1-6-4"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-6-4"}},[_._v("#")]),_._v(" 1.6.4")]),_._v(" "),v("ul",[v("li",[_._v("支持代理服务端用户(删除/禁用)、端口池(删除/禁用/启用)、License(删除/禁用/启用)、端口映射(新增/删除/禁用/启用)实时生效")]),_._v(" "),v("li",[_._v("启动参数优化")]),_._v(" "),v("li",[_._v("服务端静态资源服务支持缓存、gzip压缩,提升响应速度")])]),_._v(" "),v("h2",{attrs:{id:"_1-6-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-6-0"}},[_._v("#")]),_._v(" 1.6.0")]),_._v(" "),v("ul",[v("li",[_._v("新增日志管理模块,调度日志迁移至日志管理")]),_._v(" "),v("li",[_._v("管理后台新增登录日志")]),_._v(" "),v("li",[_._v("新增首页流量统计")])]),_._v(" "),v("h2",{attrs:{id:"_1-5-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-5-0"}},[_._v("#")]),_._v(" 1.5.0")]),_._v(" "),v("ul",[v("li",[_._v("管理后台新增用户管理、License管理、端口映射、调度管理、客户端连接日志、调度日志")]),_._v(" "),v("li",[_._v("支持默认sqlite数据库")]),_._v(" "),v("li",[_._v("底层框架Aop、Banner、SqlMapper、Ioc、@Value注解、Yml配置加载、静态资源服务等优化")]),_._v(" "),v("li",[_._v("底层框架新增@Async、@Singleton等注解")]),_._v(" "),v("li",[_._v("新增AsgcCompiler、ApplicationEvent机制封装")])]),_._v(" "),v("h2",{attrs:{id:"_1-0-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#_1-0-0"}},[_._v("#")]),_._v(" 1.0.0")]),_._v(" "),v("blockquote",[v("p",[_._v("第一个基本可用版本")])]),_._v(" "),v("ul",[v("li",[_._v("基于自研底层应用框架、Netty")]),_._v(" "),v("li",[_._v("纯配置实现、无管理后台")]),_._v(" "),v("li",[_._v("支持TCP代理")])])])}),[],!1,null,null,null);v.default=l.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/38.7632b8b0.js b/neutrino-proxy/assets/js/38.7632b8b0.js new file mode 100644 index 00000000..08416dcf --- /dev/null +++ b/neutrino-proxy/assets/js/38.7632b8b0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{404:function(v,_,l){"use strict";l.r(_);var i=l(14),t=Object(i.a)({},(function(){var v=this,_=v._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("ul",[_("li",[v._v("2024-12-10 2.0.2版本发布,新增域名管理,端口映射支持绑定多个域名")]),v._v(" "),_("li",[v._v("2023-12-21 2.0.1版本发布,jdk版本升级到21,支持安全组(黑/白名单IP限制)、限速")]),v._v(" "),_("li",[v._v("2023-10-31 2.0.0版本发布,升级jdk版本至jdk17、支持原生编译、去掉sqlite改为默认H2数据库")]),v._v(" "),_("li",[v._v("2023-09-25 中微子代理Gitee Star数突破1000")]),v._v(" "),_("li",[v._v("2023-09-22 1.9.0版本发布,端口映射支持UDP协议")]),v._v(" "),_("li",[v._v("2023-09-07 1.8.6版本发布,后台若干细节优化")]),v._v(" "),_("li",[v._v("2023-07-04 1.8.5版本发布,后台若干细节优化、配置文件优化")]),v._v(" "),_("li",[v._v("2023-06-08 1.8.4版本发布,增加对mariadb的支持、配置文件支持指定日志级别、重连参数")]),v._v(" "),_("li",[v._v("2023-06-03 1.8.3版本发布,客户端重连优化、服务端验证客户端身份逻辑优化")]),v._v(" "),_("li",[v._v("2023-05-27 1.8.2版本发布,增加HTTPS支持")]),v._v(" "),_("li",[v._v("2023-04-03 1.8.0版本发布,端口映射支持选择协议,HTTP映射支持子域名")]),v._v(" "),_("li",[v._v("2023-03-26 1.7.1版本发布,新增端口池分组、新增报表管理模块、首页图表优化")]),v._v(" "),_("li",[v._v("2023-03-12 1.7.0版本发布,底层框架更换为Solon + MybatisPlus")]),v._v(" "),_("li",[v._v("2023-02-23 1.6.4版本发布,管理后台增、删、改、禁用实时生效,启动参数、GZip优化")]),v._v(" "),_("li",[v._v("2023-01-16 加入Dromara组织")]),v._v(" "),_("li",[v._v("2023-01-08 中微子代理Gitee Star突破100")]),v._v(" "),_("li",[v._v("2022-11-23 1.6.0版本发布,新增日志管理模块,新增首页流量统计")]),v._v(" "),_("li",[v._v("2022-10-12 1.5.0版本发布,底层框架优化,新增管理后台")]),v._v(" "),_("li",[v._v("2022-06-16 1.0.0版本发布,基于自研应用框架、纯配置无管理后台")])])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/39.5140c9f6.js b/neutrino-proxy/assets/js/39.5140c9f6.js new file mode 100644 index 00000000..9ef0b57d --- /dev/null +++ b/neutrino-proxy/assets/js/39.5140c9f6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{405:function(t,r,e){"use strict";e.r(r);var n=e(14),o=Object(n.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("p",[t._v("如果您正在使用这个项目并感觉良好,或者是想支持我继续开发,您可以通过如下"),r("code",[t._v("任意")]),t._v("方式支持我:")]),t._v(" "),r("ol",[r("li",[t._v("Star并分享 "),r("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[t._v("neutrino-proxy"),r("OutboundLink")],1),t._v(" 🚀\n谢谢! ❤️")])]),t._v(" "),r("h2",{attrs:{id:"致谢"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#致谢"}},[t._v("#")]),t._v(" 致谢")]),t._v(" "),r("p",[t._v("感谢给予支持的朋友,您的支持是我前进的动力 🎉")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/4.3e10c61a.js b/neutrino-proxy/assets/js/4.3e10c61a.js new file mode 100644 index 00000000..3b780629 --- /dev/null +++ b/neutrino-proxy/assets/js/4.3e10c61a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{285:function(t,s,n){},324:function(t,s,n){"use strict";n(285)},371:function(t,s,n){"use strict";n.r(s);const i=["这里什么都没有。","我是谁?我在哪?","这是一个Four-Oh-Four.","看来我们的链接坏掉了~"];var o={methods:{getMsg:()=>i[Math.floor(Math.random()*i.length)]}},e=(n(324),n(14)),a=Object(e.a)(o,(function(){var t=this._self._c;return t("div",{staticClass:"theme-container"},[t("div",{staticClass:"theme-vdoing-content"},[t("span",[this._v("404")]),this._v(" "),t("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),t("router-link",{attrs:{to:"/"}},[this._v("返回首页")])],1)])}),[],!1,null,"439bb2a8",null);s.default=a.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/40.40facdf8.js b/neutrino-proxy/assets/js/40.40facdf8.js new file mode 100644 index 00000000..cbfaceba --- /dev/null +++ b/neutrino-proxy/assets/js/40.40facdf8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{406:function(t,n,s){"use strict";s.r(n);var e=s(14),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/5.26fb3e34.js b/neutrino-proxy/assets/js/5.26fb3e34.js new file mode 100644 index 00000000..7d5aa1b2 --- /dev/null +++ b/neutrino-proxy/assets/js/5.26fb3e34.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{366:function(t,e,l){t.exports=l.p+"assets/img/a1.578566de.png"},367:function(t,e,l){t.exports=l.p+"assets/img/a2.58603eb1.png"},395:function(t,e,l){"use strict";l.r(e);var a=l(14),_=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"个人赞赏说明"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#个人赞赏说明"}},[t._v("#")]),t._v(" 个人赞赏说明")]),t._v(" "),e("p",[t._v("随着用户增加,需要协助解决的问题也多种多样,为了能给用户提供 "),e("code",[t._v("更优质")]),t._v("、"),e("code",[t._v("更准确")]),t._v(" 的 疑难问题 解答我们推出赞赏咨询服务")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("赞赏金额")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("服务时长")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("服务说明")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("任意金额")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您将获得赞助者列表的永久留名。")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("30")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("一个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您在群内反馈的问题将优先得到作者响应")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("120")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("三个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("获得微信一对一的咨询服务")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("399")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("六个月")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("获得官网首页特别赞助席位一个,一次远程协助")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("更多金额")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("您将获得私人定制服务")])])])]),t._v(" "),e("blockquote",[e("p",[t._v("注意1:服务项目是逐级叠加:如,您赞赏的金额是 80 员那么您将享受:任意金额、一个月、三个月的服务内容")])]),t._v(" "),e("blockquote",[e("p",[t._v("注意2:二开问题不在个人赞赏支持服务范畴内,如需咨询二开问题或者二开方案请找作者协商")])]),t._v(" "),e("h2",{attrs:{id:"赞赏途径"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#赞赏途径"}},[t._v("#")]),t._v(" 赞赏途径")]),t._v(" "),e("blockquote",[e("p",[t._v("除4以外,赞赏后请及时通过官网首页微信二维码与作者取得联系")])]),t._v(" "),e("ul",[e("li",[t._v("1、微信赞赏")]),t._v(" "),e("li",[t._v("2、支付宝转账")]),t._v(" "),e("li",[t._v("3、Gitee项目捐赠:"),e("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击这里"),e("OutboundLink")],1),t._v("打开后拉到最底部点击捐赠")]),t._v(" "),e("li",[t._v("4、微信好友转账")])]),t._v(" "),e("table",[e("tr",[e("td",{attrs:{align:"center"}},[t._v("微信赞赏")]),e("td",{attrs:{align:"center"}},[t._v("支付宝转账")])]),t._v(" "),e("tr",[e("td",[e("img",{attrs:{width:"300px",src:l(366)}})]),e("td",[e("img",{attrs:{width:"300px",src:l(367)}})])]),t._v(" "),e("tr")])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/6.526bfcbe.js b/neutrino-proxy/assets/js/6.526bfcbe.js new file mode 100644 index 00000000..06e8eba0 --- /dev/null +++ b/neutrino-proxy/assets/js/6.526bfcbe.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{320:function(t,s,a){},368:function(t,s,a){"use strict";a(320)},407:function(t,s,a){"use strict";a.r(s);a(368);var r=a(14),o=Object(r.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("p",{attrs:{align:"center"}},[s("a",{staticClass:"become-sponsor",attrs:{href:"https://gitee.com/dromara/neutrino-proxy"}},[t._v("支持这个项目")])]),t._v(" "),s("br"),t._v(" "),s("p",{attrs:{align:"center"}},[s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"https://gitee.com/dromara/neutrino-proxy/badge/star.svg?theme=dark",alt:"star"}})]),t._v(" "),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"https://gitee.com/dromara/neutrino-proxy/badge/fork.svg?theme=dark",alt:"forks"}})])]),t._v(" "),s("br"),t._v(" "),s("br"),t._v(" "),s("br"),t._v(" "),s("h2",{attrs:{id:"⚡-反馈与交流"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#⚡-反馈与交流"}},[t._v("#")]),t._v(" ⚡ 反馈与交流")]),t._v(" "),s("p",[t._v("在使用过程中有任何问题和想法,请给我提 "),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/issues",target:"_blank",rel:"noopener noreferrer"}},[t._v("Issue"),s("OutboundLink")],1),t._v("。\n你也可以在Issue查看别人提的问题和给出解决方案。")]),t._v(" "),s("p",[t._v("或者加入我们的交流群:\n")]),s("div",{attrs:{align:"center"}},[s("img",{staticClass:"no-zoom",staticStyle:{width:"200px",margin:"10px"},attrs:{src:t.$withBase("/img/qrcode/wxq.png")}}),t._v(" "),s("p",[t._v('中微子 微信群(添加我微信备注"中微子进群")')])]),t._v(" "),s("br"),s("p"),t._v(" "),s("h2",{attrs:{id:"🌈特别赞助"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#🌈特别赞助"}},[t._v("#")]),t._v(" 🌈特别赞助")]),t._v(" "),s("div",{staticClass:"cardListContainer"},[s("div",{staticClass:"card-list"},[s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#102863","--random-color":"#102863",color:"#FFFFFF"},attrs:{href:"https://www.xigexb.com?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/xigexiaobao.jpg"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("喜鸽小宝")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("一个爱好写代码的同学。"),s("br"),t._v(" ")])])]),t._v(" "),s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#c6ddff","--random-color":"#c6ddff",color:"#000000"},attrs:{href:"https://7bu.top?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/7bu.ico"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("去不图床")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("杜老师说旗下付费图片外链平台。"),s("br"),t._v(" ")])])]),t._v(" "),s("a",{staticClass:"card-item row-3",staticStyle:{"background-color":"#486898","--random-color":"#c6ddff",color:"#FFFFFF"},attrs:{href:"http://doc.zyplayer.com/#/integrate/zyplayer-doc?utm=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom",attrs:{src:"img/sponsor/zyplayer-doc.png"}}),t._v(" "),s("div",[s("p",{staticClass:"name"},[t._v("zyplayer-doc")]),t._v(" "),s("p",{staticClass:"desc"},[t._v("私有化部署的企业级文档管理与知识库AI问答平台。")])])])])]),t._v(" "),s("h2",{attrs:{id:"🤝-dromara-组织项目"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#🤝-dromara-组织项目"}},[t._v("#")]),t._v(" 🤝 dromara 组织项目")]),t._v(" "),s("p",{attrs:{align:"center"}},[s("b",[s("a",{attrs:{href:"https://dromara.org/zh/projects/?from=neutrino-proxy",target:"_blank"}},[t._v("为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。")])])]),t._v(" "),s("p",[s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/TLog?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/tlog.png",msg:"一个轻量级的分布式日志标记追踪神器,10分钟即可接入,自动对日志打标签完成微服务的链路追踪"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/liteFlow?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/liteflow.png",msg:"轻量,快速,稳定,可编排的组件式流程引擎"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://hutool.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hutool.jpg",msg:"🍬小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://sa-token.cc/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/sa-token.png",msg:"一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/hmily?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hmily.png",msg:"高性能一站式分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/Raincat?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/raincat.png",msg:"强一致性分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/myth?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/myth.png",msg:"可靠消息分布式事务解决方案。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://cubic.jiagoujishu.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/cubic.png",msg:"一站式问题定位平台,以agent的方式无侵入接入应用,完整集成arthas功能模块,致力于应用级监控,帮助开发人员快速定位问题"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://maxkey.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/maxkey.png",msg:"业界领先的身份管理和认证产品"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://forest.dtflyx.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/forest-logo.png",msg:"Forest能够帮助您使用更简单的方式编写Java的HTTP客户端",nf:""}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://jpom.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/jpom.svg",msg:"一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://su.usthe.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/sureness.png",msg:"面向 REST API 的高性能认证鉴权框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://easy-es.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/easy-es2.png",msg:"🚀傻瓜级ElasticSearch搜索引擎ORM框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/northstar?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/northstar_logo.png",msg:"Northstar盈富量化交易平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://hertzbeat.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/hertzbeat-brand.svg",msg:"易用友好的云监控系统"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dromara.gitee.io/fast-request/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/fast-request.gif",msg:"Idea 版 Postman,为简化调试API而生"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.jeesuite.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/mendmix.png",msg:"开源分布式云原生架构一站式解决方案"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/koalas-rpc?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/koalas-rpc2.png",msg:"企业生产级百亿日PV高可用可拓展的RPC框架。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://async.sizegang.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/gobrs-async.png",msg:"🔥 配置极简功能强大的异步任务动态编排框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dynamictp.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dynamic-tp.png",msg:"🔥🔥🔥 基于配置中心的轻量级动态可监控线程池"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.x-easypdf.cn?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/x-easypdf.png",msg:"一个用搭积木的方式构建pdf的框架(基于pdfbox)"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://dromara.gitee.io/image-combiner?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/image-combiner.png",msg:"一个专门用于图片合成的工具,没有很复杂的功能,简单实用,却不失强大"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.herodotus.cn/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dante-cloud.jpg",msg:"Dante-Cloud 是一款企业级微服务架构和服务能力开发平台。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://www.mtruning.club?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/go-view.png",msg:"低代码数据可视化开发平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://tangyh.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/lamp-cloud.png",msg:"微服务中后台快速开发平台,支持租户(SaaS)模式、非租户模式"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.redisfront.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/redis-front.png",msg:"RedisFront 是一款开源免费的跨平台 Redis 桌面客户端工具, 支持单机模式, 集群模式, 哨兵模式以及 SSH 隧道连接, 可轻松管理Redis缓存数据."}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.yuque.com/u34495/mivcfg?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/electron-egg.png",msg:"一个入门简单、跨平台、企业级桌面软件开发框架"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/open-capacity-platform?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/open-capacity-platform.jpg",msg:"简称ocp是基于Spring Cloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....)"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"http://easy-trans.fhs-opensource.top/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/easy_trans.png",msg:"Easy-Trans 一个注解搞定数据翻译,减少30%SQL代码量"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/neutrino-proxy?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/neutrino-proxy.svg",msg:"一款基于 Netty 的、开源的内网穿透神器。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://chatgpt.cn.obiscr.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/chatgpt.png",msg:"一个支持在 JetBrains 系列 IDE 上运行的 ChatGPT 的插件。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/zyplayer-doc?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/zyplayer-doc.png",msg:"zyplayer-doc是一款适合团队和个人使用的WIKI文档管理工具,同时还包含数据库文档、Api接口文档。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/payment-spring-boot?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/payment-spring-boot.png",msg:"最全最好用的微信支付V3 Spring Boot 组件。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://www.j2eefast.com/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/j2eefast.png",msg:"J2eeFAST 是一个致力于中小企业 Java EE 企业级快速开发平台,我们永久开源!"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/data-compare?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dataCompare.png",msg:"数据库比对工具:hive 表数据比对,mysql、Doris 数据比对,实现自动化配置进行数据比对,避免频繁写sql 进行处理,低代码(Low-Code) 平台"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/open-giteye-api?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/open-giteye-api.svg",msg:"giteye.net 是专为开源作者设计的数据图表服务工具类站点,提供了包括 Star 趋势图、贡献者列表、Gitee指数等数据图表服务。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/RuoYi-Vue-Plus?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/RuoYi-Vue-Plus.png",msg:"后台管理系统 重写 RuoYi-Vue 所有功能 集成 Sa-Token + Mybatis-Plus + Jackson + Xxl-Job + SpringDoc + Hutool + OSS 定期同步"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/RuoYi-Cloud-Plus?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/RuoYi-Cloud-Plus.png",msg:"微服务管理系统 重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo3.0 Sa-Token Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/dromara/stream-query?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/stream-query.png",msg:"允许完全摆脱 Mapper 的 mybatis-plus 体验!封装 stream 和 lambda 操作进行数据返回处理。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://dromara.org/zh/projects/?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:"img/logo/dromara.png",msg:"让每一位开源爱好者,体会到开源的快乐。"}})])]),t._v(" "),s("h2",[t._v("🤝 友情开源项目")]),t._v(" "),s("p",[s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/noear/solon?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:t.$withBase("img/logo/solon_logo_500_150.png"),msg:"一个高效的应用开发框架:更快、更小、更简单。"}})]),t._v(" "),s("a",{staticClass:"friends-item",attrs:{href:"https://gitee.com/xiaonuobase/snowy?from=neutrino-proxy",target:"_blank"}},[s("img",{staticClass:"no-zoom friends-item-img hover-alt",attrs:{src:t.$withBase("img/logo/xiaonuo.png"),msg:"国内首个国密前后端分离快速开发平台"}})])]),t._v(" "),s("div",{staticClass:"wwads-cn wwads-horizontal page-wwads",attrs:{"data-id":"136"}}),t._v(" "),s("style",[t._v("\n .page-wwads{\n width:100%!important;\n min-height: 0;\n margin: 0;\n }\n .page-wwads .wwads-img img{\n width:80px!important;\n }\n .page-wwads .wwads-poweredby{\n width: 40px;\n position: absolute;\n right: 25px;\n bottom: 3px;\n }\n .wwads-content .wwads-text, .page-wwads .wwads-text{\n height: 100%;\n padding-top: 5px;\n display: block;\n }\n.friends-item {\n width: 10em;\n height: 3em;\n flex: 1;\n text-align: center;\n display: inline-block;\n margin: 5px;\n border: 2px solid #ebeef5;\n box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);\n border-radius: 8px;\n padding: 10px\n}\n.friends-item-img {\n -o-object-fit: contain;\n object-fit: contain;\n max-width: 150px!important;\n height: 100%\n}\n/*a {*/\n/* font-weight: 500;*/\n/* text-decoration: none*/\n/*}*/\n/*a,p a code {*/\n/*color: #4274f4*/\n/*}*/\n/*p a code {*/\n/*font-weight: 400*/\n/*}*/\n")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/7.df78e3fb.js b/neutrino-proxy/assets/js/7.df78e3fb.js new file mode 100644 index 00000000..6b9cb0d1 --- /dev/null +++ b/neutrino-proxy/assets/js/7.df78e3fb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{372:function(e,t,_){"use strict";_.r(t);var v=_(14),s=Object(v.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("提示")]),e._v(" "),t("p",[e._v("当前最新版本:2.0.2。从之前的版本升级过来,请参照:更新记录 > 版本记录.")])]),e._v(" "),t("h2",{attrs:{id:"_1、快速上手须知"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、快速上手须知"}},[e._v("#")]),e._v(" 1、快速上手须知")]),e._v(" "),t("ul",[t("li",[e._v("所谓快速上手,就是针对从来没用过的新手编写的、快速完成从安装部署到首次使用的最简化流程")]),e._v(" "),t("li",[e._v("该流程中请严格按照说明步骤执行,不要靠猜测自作聪明的修改配置")]),e._v(" "),t("li",[e._v("如果的确需要修改,请先把安装部署、使用须知、常见问题全部仔细读一遍")]),e._v(" "),t("li",[e._v("快速上手中涉及到的配置,仅仅是快速体验所必须的配置,完整的配置请参照使用须知中的"),t("code",[e._v("服务端配置")]),e._v("、"),t("code",[e._v("客户端配置")])])]),e._v(" "),t("h2",{attrs:{id:"_2、部署服务"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务"}},[e._v("#")]),e._v(" 2、部署服务")]),e._v(" "),t("ul",[t("li",[e._v("根据需要自行选择jar、docker、原生部署、docker-compose任意一种完成部署,分别参见对应的文档")]),e._v(" "),t("li",[e._v("任何一种部署方式,不要求客户端与服务端一致。如:服务端采用docker部署,客户端可以用docker部署、也可以用jar、原生部署")]),e._v(" "),t("li",[e._v("管理后台说明\n"),t("ul",[t("li",[e._v("服务端部署成功后,访问http://{服务端IP}:8888打开后台管理页面。使用默认的管理员帐号登录:admin/123456")]),e._v(" "),t("li",[e._v("打开代理配置>License管理页面,可以看到系统已经自动为管理员初始化了一条License记录,复制该LicenseKey备用,后续客户端配置需要。")])])]),e._v(" "),t("li",[e._v("客户端说明\n"),t("ul",[t("li",[e._v("客户端启动后,查看服务端License管理,刷新页面,对应的License在线状态为"),t("code",[e._v("在线")]),e._v(",则表明客户端已正常连接。")])])])]),e._v(" "),t("h2",{attrs:{id:"_3、代理验证"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3、代理验证"}},[e._v("#")]),e._v(" 3、代理验证")]),e._v(" "),t("ul",[t("li",[e._v("本地启动被代理服务,如:redis、本地web项目、本地mysql等等,假设被代理服务端口为:8080")]),e._v(" "),t("li",[e._v("先确保本地能正常访问被代理服务,如果本地都不能访问,不用想代理更不可能!!!")]),e._v(" "),t("li",[e._v("服务端管理后台端口映射管理,使用默认的licesne创建一条端口映射,如:9101 -> 127.0.0.1:8080")]),e._v(" "),t("li",[e._v("通过服务端IP+9101(上面License配置的端口映射重的服务端端口)访问本地被代理服务")])]),e._v(" "),t("p",[e._v("访问成功,至此首次完整的内网穿透体验完成。开源不易,请速至"),t("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gitee仓库"),t("OutboundLink")],1),e._v("一键三连🤝")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/8.e3e55472.js b/neutrino-proxy/assets/js/8.e3e55472.js new file mode 100644 index 00000000..de1bf49a --- /dev/null +++ b/neutrino-proxy/assets/js/8.e3e55472.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{373:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"_1、环境准备"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1、环境准备"}},[t._v("#")]),t._v(" 1、环境准备")]),t._v(" "),s("ul",[s("li",[t._v("首先确保已安装Java21运行环境")]),t._v(" "),s("li",[t._v("打开"),s("a",{attrs:{href:"https://gitee.com/dromara/neutrino-proxy/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发行版页面"),s("OutboundLink")],1),t._v(",下载最新的release包:"),s("code",[t._v("neutrino-proxy-server-jdk21-2.0.2-jar.zip")]),t._v("、"),s("code",[t._v("neutrino-proxy-client-jdk21-2.0.2-jar.zip")])])]),t._v(" "),s("h2",{attrs:{id:"_2、部署服务端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署服务端"}},[t._v("#")]),t._v(" 2、部署服务端")]),t._v(" "),s("ul",[s("li",[t._v("在服务器上新建部署目录:"),s("code",[t._v("/work/projects/neutrino-proxy-server")])]),t._v(" "),s("li",[t._v("将"),s("code",[t._v("neutrino-proxy-server-jdk21-2.0.2-jar.zip")]),t._v("上传至服务器部署目录,并解压")]),t._v(" "),s("li",[t._v("执行命令"),s("code",[t._v("java -Dfile.encoding=utf-8 -jar neutrino-proxy-server.jar")]),t._v("启动服务端完成部署,默认使用h2数据库。")]),t._v(" "),s("li",[t._v("若需要指定自己的mysql数据库,则需要在当前目录下的"),s("code",[t._v("app.yml")]),t._v("文件中,修改数据库配置如下:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("db")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mysql\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" jdbc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("mysql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//xxxx"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("3306/neutrino"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("proxy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("?")]),t._v("useUnicode=true"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("driver-class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" com.mysql.jdbc.Driver\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库帐号")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据库密码")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxx\n")])])]),s("ul",[s("li",[t._v("可参照 https://gitee.com/dromara/neutrino-proxy/blob/master/scripts/unix/server_start.sh 使用shell脚本启动服务端。")])]),t._v(" "),s("h2",{attrs:{id:"_3、部署客户端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3、部署客户端"}},[t._v("#")]),t._v(" 3、部署客户端")]),t._v(" "),s("ul",[s("li",[t._v("本地解压"),s("code",[t._v("neutrino-proxy-client-jdk21-2.0.2-jar.zip")]),t._v("文件")]),t._v(" "),s("li",[t._v("修改"),s("code",[t._v("app.yml")]),t._v("文件中的server-ip为服务器公网ip,并配置license-key,以下是相关的部分配置:")])]),t._v(" "),s("div",{staticClass:"language-yml extra-class"},[s("pre",{pre:!0,attrs:{class:"language-yml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("neutrino")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("proxy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("tunnel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("key-store-password")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123456")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("jks-path")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" classpath"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("/test.jks\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-ip")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("server-port")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9002")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用ssl")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ssl-enable")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("license-key")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" xxxx\n")])])]),s("ul",[s("li",[t._v("执行命令"),s("code",[t._v("java -jar neutrino-proxy-client.jar")]),t._v("启动客户端")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/9.cc059fee.js b/neutrino-proxy/assets/js/9.cc059fee.js new file mode 100644 index 00000000..bbf46112 --- /dev/null +++ b/neutrino-proxy/assets/js/9.cc059fee.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{374:function(a,t,s){"use strict";s.r(t);var e=s(14),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"_1、-部署服务端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1、-部署服务端"}},[a._v("#")]),a._v(" 1、 部署服务端")]),a._v(" "),t("ul",[t("li",[a._v("dockerHub镜像地址:aoshiguchen/neutrino-proxy-server:latest")]),a._v(" "),t("li",[a._v("阿里云镜像地址:registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest")])]),a._v(" "),t("h3",{attrs:{id:"使用默认h2数据库一键部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用默认h2数据库一键部署"}},[a._v("#")]),a._v(" 使用默认h2数据库一键部署")]),a._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("docker")]),a._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-it")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-p")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("9000")]),a._v("-9200:9000-9200/tcp "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-p")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("8888")]),a._v(":8888 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-d")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--restart")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("always "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--name")]),a._v(" neutrino-proxy "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/config:/root/neutrino-proxy/config "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/data:/root/neutrino-proxy/data "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-v")]),a._v(" /root/neutrino-proxy-server/logs:/root/neutrino-proxy/logs "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\naoshiguchen/neutrino-proxy-server:latest\n")])])]),t("h3",{attrs:{id:"指定自己的mysql数据库"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#指定自己的mysql数据库"}},[a._v("#")]),a._v(" 指定自己的mysql数据库")]),a._v(" "),t("ul",[t("li",[a._v("在服务器上创建目录:/root/neutrino-proxy/config")]),a._v(" "),t("li",[a._v("在该目录下创建"),t("code",[a._v("app.yml")]),a._v("文本文件,并配置如下内容:")])]),a._v(" "),t("div",{staticClass:"language-yml extra-class"},[t("pre",{pre:!0,attrs:{class:"language-yml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("neutrino")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("data")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("db")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" mysql\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("url")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" jdbc"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("//xxxx"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("3306/neutrino"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("proxy"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("?")]),a._v("useUnicode=true"),t("span",{pre:!0,attrs:{class:"token important"}},[a._v("&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("driver-class")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" com.mysql.jdbc.Driver\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 数据库帐号")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("username")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" xxx\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# 数据库密码")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" xxx\n")])])]),t("ul",[t("li",[a._v("然后再执行上面的docker一键部署命令即可")])]),a._v(" "),t("h2",{attrs:{id:"_2、部署客户端"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2、部署客户端"}},[a._v("#")]),a._v(" 2、部署客户端")]),a._v(" "),t("ul",[t("li",[a._v("dockerHub镜像地址:aoshiguchen/neutrino-proxy-client:latest")]),a._v(" "),t("li",[a._v("阿里云镜像地址:registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy-client:latest")]),a._v(" "),t("li",[a._v("命令中的服务端ip、license请自行补充")]),a._v(" "),t("li",[a._v("若是首次使用,请仔细阅读快速上手,以确定license从哪里取得")])]),a._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("docker")]),a._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-it")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-d")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--restart")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("always "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--name")]),a._v(" npclient "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-e")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("xxxx "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-e")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("LICENSE_KEY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("xxxx "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\naoshiguchen/neutrino-proxy-client:latest\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/neutrino-proxy/assets/js/app.26329228.js b/neutrino-proxy/assets/js/app.26329228.js new file mode 100644 index 00000000..573aa3dd --- /dev/null +++ b/neutrino-proxy/assets/js/app.26329228.js @@ -0,0 +1,10 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function n(n){for(var r,a,s=n[0],c=n[1],l=n[2],p=0,d=[];pfunction e(n,t,r,o=1){if("string"==typeof n)return f(t,n,r);if(Array.isArray(n))return Object.assign(f(t,n[0],r),{title:n[1]});{o>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const i=n.children||[];return 0===i.length&&n.path?Object.assign(f(t,n.path,r),{title:n.title}):{type:"group",path:n.path,title:n.title,sidebarDepth:n.sidebarDepth,initialOpenGroupIndex:n.initialOpenGroupIndex,children:i.map(n=>e(n,t,r,o+1)),collapsable:!1!==n.collapsable}}}(e,o,t)):[]}return[]}function v(e){const n=m(e.headers||[]);return[{type:"group",collapsable:!1,title:e.title,path:null,children:n.map(n=>({type:"auto",title:n.title,basePath:e.path,path:e.path+"#"+n.slug,children:n.children||[]}))}]}function m(e){let n;return(e=e.map(e=>Object.assign({},e))).forEach(e=>{2===e.level?n=e:n&&(n.children||(n.children=[])).push(e)}),e.filter(e=>2===e.level)}function g(e){return Object.assign(e,{type:e.items&&e.items.length?"links":"link"})}function y(e){return Object.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase()}function b(e){let n=e.frontmatter.date||e.lastUpdated||new Date,t=new Date(n);return"Invalid Date"==t&&n&&(t=new Date(n.replace(/-/g,"/"))),t.getTime()}function x(e,n){return b(n)-b(e)}},function(e,n,t){"use strict";t(151)},function(e,n){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,n,t){"use strict";e.exports=!1},function(e,n,t){"use strict";var r=t(6),o=t(17),i=t(33);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n,t){"use strict";e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},function(e,n,t){var r=t(28),o=t(184),i=t(185),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},function(e,n,t){"use strict";var r=t(5),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},function(e,n,t){var r=t(13).Symbol;e.exports=r},function(e,n,t){"use strict";var r=t(10),o=t(30),i=t(31),a=t(178),s=t(180);r({target:"Array",proto:!0,arity:1,forced:t(3)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var n=o(this),t=i(n),r=arguments.length;s(t+r);for(var c=0;c
'};function o(e,n,t){return et?t:e}function i(e){return 100*(-1+e)}t.configure=function(e){var n,t;for(n in e)void 0!==(t=e[n])&&e.hasOwnProperty(n)&&(r[n]=t);return this},t.status=null,t.set=function(e){var n=t.isStarted();e=o(e,r.minimum,1),t.status=1===e?null:e;var c=t.render(!n),l=c.querySelector(r.barSelector),u=r.speed,p=r.easing;return c.offsetWidth,a((function(n){""===r.positionUsing&&(r.positionUsing=t.getPositioningCSS()),s(l,function(e,n,t){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+n+"ms "+t,o}(e,u,p)),1===e?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){t.remove(),n()}),u)}),u)):setTimeout(n,u)})),this},t.isStarted=function(){return"number"==typeof t.status},t.start=function(){t.status||t.set(0);var e=function(){setTimeout((function(){t.status&&(t.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},t.done=function(e){return e||t.status?t.inc(.3+.5*Math.random()).set(1):this},t.inc=function(e){var n=t.status;return n?("number"!=typeof e&&(e=(1-n)*o(Math.random()*n,.1,.95)),n=o(n+e,0,.994),t.set(n)):t.start()},t.trickle=function(){return t.inc(Math.random()*r.trickleRate)},e=0,n=0,t.promise=function(r){return r&&"resolved"!==r.state()?(0===n&&t.start(),e++,n++,r.always((function(){0==--n?(e=0,t.done()):t.set((e-n)/e)})),this):this},t.render=function(e){if(t.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var n=document.createElement("div");n.id="nprogress",n.innerHTML=r.template;var o,a=n.querySelector(r.barSelector),c=e?"-100":i(t.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=n.querySelector(r.spinnerSelector))&&d(o),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(n),n},t.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},t.isRendered=function(){return!!document.getElementById("nprogress")},t.getPositioningCSS=function(){var e=document.body.style,n="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return n+"Perspective"in e?"translate3d":n+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function n(){var t=e.shift();t&&t(n)}return function(t){e.push(t),1==e.length&&n()}}(),s=function(){var e=["Webkit","O","Moz","ms"],n={};function t(t){return t=t.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,n){return n.toUpperCase()})),n[t]||(n[t]=function(n){var t=document.body.style;if(n in t)return n;for(var r,o=e.length,i=n.charAt(0).toUpperCase()+n.slice(1);o--;)if((r=e[o]+i)in t)return r;return n}(t))}function r(e,n,r){n=t(n),e.style[n]=r}return function(e,n){var t,o,i=arguments;if(2==i.length)for(t in n)void 0!==(o=n[t])&&n.hasOwnProperty(t)&&r(e,t,o);else r(e,i[1],i[2])}}();function c(e,n){return("string"==typeof e?e:p(e)).indexOf(" "+n+" ")>=0}function l(e,n){var t=p(e),r=t+n;c(t,n)||(e.className=r.substring(1))}function u(e,n){var t,r=p(e);c(e,n)&&(t=r.replace(" "+n+" "," "),e.className=t.substring(1,t.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return t})?r.call(n,t,n,e):r)||(e.exports=o)},function(e,n,t){"use strict";var r=t(0),o=t(17),i=t(81),a=t(50);e.exports=function(e,n,t,s){s||(s={});var c=s.enumerable,l=void 0!==s.name?s.name:n;if(r(t)&&i(t,l,s),s.global)c?e[n]=t:a(n,t);else{try{s.unsafe?e[n]&&(c=!0):delete e[n]}catch(e){}c?e[n]=t:o.f(e,n,{value:t,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},function(e,n,t){"use strict";var r=t(124),o=t(12),i=t(1),a=t(48),s=t(160),c=t(31),l=t(36),u=t(161),p=t(91),d=t(54),f=TypeError,h=function(e,n){this.stopped=e,this.result=n},v=h.prototype;e.exports=function(e,n,t){var m,g,y,b,x,_,w,E=t&&t.that,k=!(!t||!t.AS_ENTRIES),T=!(!t||!t.IS_RECORD),C=!(!t||!t.IS_ITERATOR),j=!(!t||!t.INTERRUPTED),S=r(n,E),A=function(e){return m&&d(m,"normal",e),new h(!0,e)},O=function(e){return k?(i(e),j?S(e[0],e[1],A):S(e[0],e[1])):j?S(e,A):S(e)};if(T)m=e.iterator;else if(C)m=e;else{if(!(g=p(e)))throw new f(a(e)+" is not iterable");if(s(g)){for(y=0,b=c(e);b>y;y++)if((x=O(e[y]))&&l(v,x))return x;return new h(!1)}m=u(e,g)}for(_=T?e.next:m.next;!(w=o(_,m)).done;){try{x=O(w.value)}catch(e){d(m,"throw",e)}if("object"==typeof x&&x&&l(v,x))return x}return new h(!1)}},function(e,n,t){"use strict";var r=t(47),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,n,t){"use strict";e.exports=function(e){return null==e}},function(e,n,t){"use strict";var r=String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},function(e,n,t){"use strict";var r=t(23),o=t(2),i=t(50),a=e.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(a.versions||(a.versions=[])).push({version:"3.39.0",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,n,t){"use strict";var r=t(2),o=Object.defineProperty;e.exports=function(e,n){try{o(r,e,{value:n,configurable:!0,writable:!0})}catch(t){r[e]=n}return n}},function(e,n,t){"use strict";var r=t(76),o=t(77),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,n,t){"use strict";e.exports={}},function(e,n,t){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,t){"use strict";var r=t(12),o=t(1),i=t(37);e.exports=function(e,n,t){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){s=!0,a=e}if("throw"===n)throw t;if(s)throw a;return o(a),t}},function(e,n,t){var r=t(183),o=t(22),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},function(e,n,t){var r=t(19)(t(13),"Map");e.exports=r},function(e,n){e.exports=function(e){var n=typeof e;return null!=e&&("object"==n||"function"==n)}},function(e,n,t){var r=t(203),o=t(210),i=t(212),a=t(213),s=t(214);function c(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n-1&&e%1==0&&e<=9007199254740991}},function(e,n,t){var r=t(11),o=t(62),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,n){if(r(e))return!1;var t=typeof e;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=n&&e in Object(n))}},function(e,n,t){var r=t(26),o=t(22);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,n){e.exports=function(e){return e}},function(e,n,t){"use strict";t(275)},function(e,n,t){"use strict";var r=t(5),o=t(3),i=t(27),a=Object,s=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},function(e,n,t){"use strict";var r,o=t(1),i=t(145),a=t(53),s=t(52),c=t(147),l=t(79),u=t(51),p=u("IE_PROTO"),d=function(){},f=function(e){return" + + diff --git a/neutrino-proxy/img/Apifox-2.png b/neutrino-proxy/img/Apifox-2.png new file mode 100644 index 00000000..bf5f9c3c Binary files /dev/null and b/neutrino-proxy/img/Apifox-2.png differ diff --git a/neutrino-proxy/img/Apifox-860x320.png b/neutrino-proxy/img/Apifox-860x320.png new file mode 100644 index 00000000..a51315c6 Binary files /dev/null and b/neutrino-proxy/img/Apifox-860x320.png differ diff --git a/neutrino-proxy/img/bg.jpeg b/neutrino-proxy/img/bg.jpeg new file mode 100644 index 00000000..85e53e7d Binary files /dev/null and b/neutrino-proxy/img/bg.jpeg differ diff --git a/neutrino-proxy/img/bg.jpg b/neutrino-proxy/img/bg.jpg new file mode 100644 index 00000000..f093e799 Binary files /dev/null and b/neutrino-proxy/img/bg.jpg differ diff --git a/neutrino-proxy/img/favicon.ico b/neutrino-proxy/img/favicon.ico new file mode 100644 index 00000000..f7240fb6 Binary files /dev/null and b/neutrino-proxy/img/favicon.ico differ diff --git a/neutrino-proxy/img/gif/猫1.gif b/neutrino-proxy/img/gif/猫1.gif new file mode 100644 index 00000000..e84d8a28 Binary files /dev/null and b/neutrino-proxy/img/gif/猫1.gif differ diff --git a/neutrino-proxy/img/gif/猫2.gif b/neutrino-proxy/img/gif/猫2.gif new file mode 100644 index 00000000..28114599 Binary files /dev/null and b/neutrino-proxy/img/gif/猫2.gif differ diff --git a/neutrino-proxy/img/gif/猫3.gif b/neutrino-proxy/img/gif/猫3.gif new file mode 100644 index 00000000..894372d9 Binary files /dev/null and b/neutrino-proxy/img/gif/猫3.gif differ diff --git a/neutrino-proxy/img/gif/猫4.gif b/neutrino-proxy/img/gif/猫4.gif new file mode 100644 index 00000000..7b991309 Binary files /dev/null and b/neutrino-proxy/img/gif/猫4.gif differ diff --git a/neutrino-proxy/img/logo-0.75x.png b/neutrino-proxy/img/logo-0.75x.png new file mode 100644 index 00000000..de120681 Binary files /dev/null and b/neutrino-proxy/img/logo-0.75x.png differ diff --git a/neutrino-proxy/img/logo-text-cross.png b/neutrino-proxy/img/logo-text-cross.png new file mode 100644 index 00000000..8ab9a6e8 Binary files /dev/null and b/neutrino-proxy/img/logo-text-cross.png differ diff --git a/neutrino-proxy/img/logo-text-vertical.png b/neutrino-proxy/img/logo-text-vertical.png new file mode 100644 index 00000000..adf383aa Binary files /dev/null and b/neutrino-proxy/img/logo-text-vertical.png differ diff --git a/neutrino-proxy/img/logo.png b/neutrino-proxy/img/logo.png new file mode 100644 index 00000000..bd7eec17 Binary files /dev/null and b/neutrino-proxy/img/logo.png differ diff --git a/neutrino-proxy/img/logo.svg b/neutrino-proxy/img/logo.svg new file mode 100644 index 00000000..1b62fe13 --- /dev/null +++ b/neutrino-proxy/img/logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/neutrino-proxy/img/logo/Disjob.png b/neutrino-proxy/img/logo/Disjob.png new file mode 100644 index 00000000..a239a7aa Binary files /dev/null and b/neutrino-proxy/img/logo/Disjob.png differ diff --git a/neutrino-proxy/img/logo/RuoYi-Cloud-Plus.png b/neutrino-proxy/img/logo/RuoYi-Cloud-Plus.png new file mode 100644 index 00000000..cc697e6d Binary files /dev/null and b/neutrino-proxy/img/logo/RuoYi-Cloud-Plus.png differ diff --git a/neutrino-proxy/img/logo/RuoYi-Vue-Plus.png b/neutrino-proxy/img/logo/RuoYi-Vue-Plus.png new file mode 100644 index 00000000..d0eba10d Binary files /dev/null and b/neutrino-proxy/img/logo/RuoYi-Vue-Plus.png differ diff --git a/neutrino-proxy/img/logo/SMSAggregation.png b/neutrino-proxy/img/logo/SMSAggregation.png new file mode 100644 index 00000000..a289dd37 Binary files /dev/null and b/neutrino-proxy/img/logo/SMSAggregation.png differ diff --git a/neutrino-proxy/img/logo/bean-searcher.png b/neutrino-proxy/img/logo/bean-searcher.png new file mode 100644 index 00000000..cc451e9b Binary files /dev/null and b/neutrino-proxy/img/logo/bean-searcher.png differ diff --git a/neutrino-proxy/img/logo/chatgpt.png b/neutrino-proxy/img/logo/chatgpt.png new file mode 100644 index 00000000..9620509e Binary files /dev/null and b/neutrino-proxy/img/logo/chatgpt.png differ diff --git a/neutrino-proxy/img/logo/cloudeon.png b/neutrino-proxy/img/logo/cloudeon.png new file mode 100644 index 00000000..84152ff1 Binary files /dev/null and b/neutrino-proxy/img/logo/cloudeon.png differ diff --git a/neutrino-proxy/img/logo/cubic.png b/neutrino-proxy/img/logo/cubic.png new file mode 100644 index 00000000..a5391dac Binary files /dev/null and b/neutrino-proxy/img/logo/cubic.png differ diff --git a/neutrino-proxy/img/logo/dante-cloud.jpg b/neutrino-proxy/img/logo/dante-cloud.jpg new file mode 100644 index 00000000..c678bc17 Binary files /dev/null and b/neutrino-proxy/img/logo/dante-cloud.jpg differ diff --git a/neutrino-proxy/img/logo/dante-cloud.png b/neutrino-proxy/img/logo/dante-cloud.png new file mode 100644 index 00000000..e6a27e0a Binary files /dev/null and b/neutrino-proxy/img/logo/dante-cloud.png differ diff --git a/neutrino-proxy/img/logo/dante-cloud2.png b/neutrino-proxy/img/logo/dante-cloud2.png new file mode 100644 index 00000000..4dfbbb01 Binary files /dev/null and b/neutrino-proxy/img/logo/dante-cloud2.png differ diff --git a/neutrino-proxy/img/logo/dataCompare.png b/neutrino-proxy/img/logo/dataCompare.png new file mode 100644 index 00000000..12e6cfff Binary files /dev/null and b/neutrino-proxy/img/logo/dataCompare.png differ diff --git a/neutrino-proxy/img/logo/dromara.png b/neutrino-proxy/img/logo/dromara.png new file mode 100644 index 00000000..0833b2fa Binary files /dev/null and b/neutrino-proxy/img/logo/dromara.png differ diff --git a/neutrino-proxy/img/logo/dynamic-tp.png b/neutrino-proxy/img/logo/dynamic-tp.png new file mode 100644 index 00000000..4c91c5b4 Binary files /dev/null and b/neutrino-proxy/img/logo/dynamic-tp.png differ diff --git a/neutrino-proxy/img/logo/easy-es.png b/neutrino-proxy/img/logo/easy-es.png new file mode 100644 index 00000000..ed4ec7b7 Binary files /dev/null and b/neutrino-proxy/img/logo/easy-es.png differ diff --git a/neutrino-proxy/img/logo/easy-es2.png b/neutrino-proxy/img/logo/easy-es2.png new file mode 100644 index 00000000..c42176fe Binary files /dev/null and b/neutrino-proxy/img/logo/easy-es2.png differ diff --git a/neutrino-proxy/img/logo/easy_trans.png b/neutrino-proxy/img/logo/easy_trans.png new file mode 100644 index 00000000..e2beb7fe Binary files /dev/null and b/neutrino-proxy/img/logo/easy_trans.png differ diff --git a/neutrino-proxy/img/logo/electron-egg.png b/neutrino-proxy/img/logo/electron-egg.png new file mode 100644 index 00000000..95dc60bb Binary files /dev/null and b/neutrino-proxy/img/logo/electron-egg.png differ diff --git a/neutrino-proxy/img/logo/fast-request.gif b/neutrino-proxy/img/logo/fast-request.gif new file mode 100644 index 00000000..17e9e4d0 Binary files /dev/null and b/neutrino-proxy/img/logo/fast-request.gif differ diff --git a/neutrino-proxy/img/logo/fast-request.png b/neutrino-proxy/img/logo/fast-request.png new file mode 100644 index 00000000..3089d262 Binary files /dev/null and b/neutrino-proxy/img/logo/fast-request.png differ diff --git a/neutrino-proxy/img/logo/forest-logo.png b/neutrino-proxy/img/logo/forest-logo.png new file mode 100644 index 00000000..6db8032c Binary files /dev/null and b/neutrino-proxy/img/logo/forest-logo.png differ diff --git a/neutrino-proxy/img/logo/go-view.png b/neutrino-proxy/img/logo/go-view.png new file mode 100644 index 00000000..df5c9ce6 Binary files /dev/null and b/neutrino-proxy/img/logo/go-view.png differ diff --git a/neutrino-proxy/img/logo/gobrs-async.png b/neutrino-proxy/img/logo/gobrs-async.png new file mode 100644 index 00000000..028592ca Binary files /dev/null and b/neutrino-proxy/img/logo/gobrs-async.png differ diff --git a/neutrino-proxy/img/logo/hertzbeat-brand.svg b/neutrino-proxy/img/logo/hertzbeat-brand.svg new file mode 100644 index 00000000..2f87962d --- /dev/null +++ b/neutrino-proxy/img/logo/hertzbeat-brand.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/neutrino-proxy/img/logo/hertzbeat_brand.jpg b/neutrino-proxy/img/logo/hertzbeat_brand.jpg new file mode 100644 index 00000000..fafd1d80 Binary files /dev/null and b/neutrino-proxy/img/logo/hertzbeat_brand.jpg differ diff --git a/neutrino-proxy/img/logo/hippo4j.jpg b/neutrino-proxy/img/logo/hippo4j.jpg new file mode 100644 index 00000000..ea9198ca Binary files /dev/null and b/neutrino-proxy/img/logo/hippo4j.jpg differ diff --git a/neutrino-proxy/img/logo/hmily.png b/neutrino-proxy/img/logo/hmily.png new file mode 100644 index 00000000..719535dd Binary files /dev/null and b/neutrino-proxy/img/logo/hmily.png differ diff --git a/neutrino-proxy/img/logo/hodor.png b/neutrino-proxy/img/logo/hodor.png new file mode 100644 index 00000000..78254a5c Binary files /dev/null and b/neutrino-proxy/img/logo/hodor.png differ diff --git a/neutrino-proxy/img/logo/hutool.jpg b/neutrino-proxy/img/logo/hutool.jpg new file mode 100644 index 00000000..52a358bb Binary files /dev/null and b/neutrino-proxy/img/logo/hutool.jpg differ diff --git a/neutrino-proxy/img/logo/image-combiner.png b/neutrino-proxy/img/logo/image-combiner.png new file mode 100644 index 00000000..9b3351a4 Binary files /dev/null and b/neutrino-proxy/img/logo/image-combiner.png differ diff --git a/neutrino-proxy/img/logo/j2eefast.png b/neutrino-proxy/img/logo/j2eefast.png new file mode 100644 index 00000000..a6d3c5ca Binary files /dev/null and b/neutrino-proxy/img/logo/j2eefast.png differ diff --git a/neutrino-proxy/img/logo/jpom.png b/neutrino-proxy/img/logo/jpom.png new file mode 100644 index 00000000..10b1723c Binary files /dev/null and b/neutrino-proxy/img/logo/jpom.png differ diff --git a/neutrino-proxy/img/logo/jpom.svg b/neutrino-proxy/img/logo/jpom.svg new file mode 100644 index 00000000..84ef7eff --- /dev/null +++ b/neutrino-proxy/img/logo/jpom.svg @@ -0,0 +1,40 @@ + + + jpom-logo + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/neutrino-proxy/img/logo/koalas-rpc.png b/neutrino-proxy/img/logo/koalas-rpc.png new file mode 100644 index 00000000..f8602592 Binary files /dev/null and b/neutrino-proxy/img/logo/koalas-rpc.png differ diff --git a/neutrino-proxy/img/logo/koalas-rpc2.png b/neutrino-proxy/img/logo/koalas-rpc2.png new file mode 100644 index 00000000..4aa683e5 Binary files /dev/null and b/neutrino-proxy/img/logo/koalas-rpc2.png differ diff --git a/neutrino-proxy/img/logo/lamp-cloud.png b/neutrino-proxy/img/logo/lamp-cloud.png new file mode 100644 index 00000000..b7e39921 Binary files /dev/null and b/neutrino-proxy/img/logo/lamp-cloud.png differ diff --git a/neutrino-proxy/img/logo/layui-vue.png b/neutrino-proxy/img/logo/layui-vue.png new file mode 100644 index 00000000..18a1047a Binary files /dev/null and b/neutrino-proxy/img/logo/layui-vue.png differ diff --git a/neutrino-proxy/img/logo/liteflow-old.png b/neutrino-proxy/img/logo/liteflow-old.png new file mode 100644 index 00000000..4c87377e Binary files /dev/null and b/neutrino-proxy/img/logo/liteflow-old.png differ diff --git a/neutrino-proxy/img/logo/liteflow.png b/neutrino-proxy/img/logo/liteflow.png new file mode 100644 index 00000000..9b9b830d Binary files /dev/null and b/neutrino-proxy/img/logo/liteflow.png differ diff --git a/neutrino-proxy/img/logo/mall4j.png b/neutrino-proxy/img/logo/mall4j.png new file mode 100644 index 00000000..ecf5ee7c Binary files /dev/null and b/neutrino-proxy/img/logo/mall4j.png differ diff --git a/neutrino-proxy/img/logo/maxkey.png b/neutrino-proxy/img/logo/maxkey.png new file mode 100644 index 00000000..df747614 Binary files /dev/null and b/neutrino-proxy/img/logo/maxkey.png differ diff --git a/neutrino-proxy/img/logo/mendmix.png b/neutrino-proxy/img/logo/mendmix.png new file mode 100644 index 00000000..7b94d4ed Binary files /dev/null and b/neutrino-proxy/img/logo/mendmix.png differ diff --git a/neutrino-proxy/img/logo/mybatis-plus.png b/neutrino-proxy/img/logo/mybatis-plus.png new file mode 100644 index 00000000..c4460ea6 Binary files /dev/null and b/neutrino-proxy/img/logo/mybatis-plus.png differ diff --git a/neutrino-proxy/img/logo/myth.png b/neutrino-proxy/img/logo/myth.png new file mode 100644 index 00000000..1fd418d3 Binary files /dev/null and b/neutrino-proxy/img/logo/myth.png differ diff --git a/neutrino-proxy/img/logo/neutrino-proxy.png b/neutrino-proxy/img/logo/neutrino-proxy.png new file mode 100644 index 00000000..365d063b Binary files /dev/null and b/neutrino-proxy/img/logo/neutrino-proxy.png differ diff --git a/neutrino-proxy/img/logo/neutrino-proxy.svg b/neutrino-proxy/img/logo/neutrino-proxy.svg new file mode 100644 index 00000000..08b3b02c --- /dev/null +++ b/neutrino-proxy/img/logo/neutrino-proxy.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/neutrino-proxy/img/logo/northstar_logo.png b/neutrino-proxy/img/logo/northstar_logo.png new file mode 100644 index 00000000..bd975cb2 Binary files /dev/null and b/neutrino-proxy/img/logo/northstar_logo.png differ diff --git a/neutrino-proxy/img/logo/okhttps.png b/neutrino-proxy/img/logo/okhttps.png new file mode 100644 index 00000000..d4dce780 Binary files /dev/null and b/neutrino-proxy/img/logo/okhttps.png differ diff --git a/neutrino-proxy/img/logo/open-capacity-platform.jpg b/neutrino-proxy/img/logo/open-capacity-platform.jpg new file mode 100644 index 00000000..00ab06c2 Binary files /dev/null and b/neutrino-proxy/img/logo/open-capacity-platform.jpg differ diff --git a/neutrino-proxy/img/logo/open-capacity-platform.png b/neutrino-proxy/img/logo/open-capacity-platform.png new file mode 100644 index 00000000..050f7cd8 Binary files /dev/null and b/neutrino-proxy/img/logo/open-capacity-platform.png differ diff --git a/neutrino-proxy/img/logo/open-giteye-api.svg b/neutrino-proxy/img/logo/open-giteye-api.svg new file mode 100644 index 00000000..ade2545a --- /dev/null +++ b/neutrino-proxy/img/logo/open-giteye-api.svg @@ -0,0 +1 @@ +资源 6 \ No newline at end of file diff --git a/neutrino-proxy/img/logo/payment-spring-boot.png b/neutrino-proxy/img/logo/payment-spring-boot.png new file mode 100644 index 00000000..18b837f9 Binary files /dev/null and b/neutrino-proxy/img/logo/payment-spring-boot.png differ diff --git a/neutrino-proxy/img/logo/pear-admin.png b/neutrino-proxy/img/logo/pear-admin.png new file mode 100644 index 00000000..d1464b3f Binary files /dev/null and b/neutrino-proxy/img/logo/pear-admin.png differ diff --git a/neutrino-proxy/img/logo/raincat.png b/neutrino-proxy/img/logo/raincat.png new file mode 100644 index 00000000..e19e0d47 Binary files /dev/null and b/neutrino-proxy/img/logo/raincat.png differ diff --git a/neutrino-proxy/img/logo/redis-front.png b/neutrino-proxy/img/logo/redis-front.png new file mode 100644 index 00000000..5459fa0c Binary files /dev/null and b/neutrino-proxy/img/logo/redis-front.png differ diff --git a/neutrino-proxy/img/logo/sa-token-length-white.png b/neutrino-proxy/img/logo/sa-token-length-white.png new file mode 100644 index 00000000..e30e183a Binary files /dev/null and b/neutrino-proxy/img/logo/sa-token-length-white.png differ diff --git a/neutrino-proxy/img/logo/sa-token.png b/neutrino-proxy/img/logo/sa-token.png new file mode 100644 index 00000000..0192f1a4 Binary files /dev/null and b/neutrino-proxy/img/logo/sa-token.png differ diff --git a/neutrino-proxy/img/logo/shenyu.png b/neutrino-proxy/img/logo/shenyu.png new file mode 100644 index 00000000..ad4a52d0 Binary files /dev/null and b/neutrino-proxy/img/logo/shenyu.png differ diff --git a/neutrino-proxy/img/logo/shenyu.svg b/neutrino-proxy/img/logo/shenyu.svg new file mode 100644 index 00000000..62d9db7b --- /dev/null +++ b/neutrino-proxy/img/logo/shenyu.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/neutrino-proxy/img/logo/sms4j.png b/neutrino-proxy/img/logo/sms4j.png new file mode 100644 index 00000000..8a364cd7 Binary files /dev/null and b/neutrino-proxy/img/logo/sms4j.png differ diff --git a/neutrino-proxy/img/logo/snowy2.png b/neutrino-proxy/img/logo/snowy2.png new file mode 100644 index 00000000..b40e5dee Binary files /dev/null and b/neutrino-proxy/img/logo/snowy2.png differ diff --git a/neutrino-proxy/img/logo/solon.png b/neutrino-proxy/img/logo/solon.png new file mode 100644 index 00000000..7c769594 Binary files /dev/null and b/neutrino-proxy/img/logo/solon.png differ diff --git a/neutrino-proxy/img/logo/solon_logo_500_150.png b/neutrino-proxy/img/logo/solon_logo_500_150.png new file mode 100644 index 00000000..7c769594 Binary files /dev/null and b/neutrino-proxy/img/logo/solon_logo_500_150.png differ diff --git a/neutrino-proxy/img/logo/soul.png b/neutrino-proxy/img/logo/soul.png new file mode 100644 index 00000000..a23d974f Binary files /dev/null and b/neutrino-proxy/img/logo/soul.png differ diff --git a/neutrino-proxy/img/logo/stream-query.png b/neutrino-proxy/img/logo/stream-query.png new file mode 100644 index 00000000..635df5fd Binary files /dev/null and b/neutrino-proxy/img/logo/stream-query.png differ diff --git a/neutrino-proxy/img/logo/sureness.png b/neutrino-proxy/img/logo/sureness.png new file mode 100644 index 00000000..7fdecb93 Binary files /dev/null and b/neutrino-proxy/img/logo/sureness.png differ diff --git a/neutrino-proxy/img/logo/test-hub.png b/neutrino-proxy/img/logo/test-hub.png new file mode 100644 index 00000000..d5c8ddc5 Binary files /dev/null and b/neutrino-proxy/img/logo/test-hub.png differ diff --git a/neutrino-proxy/img/logo/tlog.png b/neutrino-proxy/img/logo/tlog.png new file mode 100644 index 00000000..c5efeac2 Binary files /dev/null and b/neutrino-proxy/img/logo/tlog.png differ diff --git a/neutrino-proxy/img/logo/tlog2.png b/neutrino-proxy/img/logo/tlog2.png new file mode 100644 index 00000000..0c0e9ae5 Binary files /dev/null and b/neutrino-proxy/img/logo/tlog2.png differ diff --git a/neutrino-proxy/img/logo/x-easypdf.png b/neutrino-proxy/img/logo/x-easypdf.png new file mode 100644 index 00000000..8aa0af02 Binary files /dev/null and b/neutrino-proxy/img/logo/x-easypdf.png differ diff --git a/neutrino-proxy/img/logo/xiaonuo.png b/neutrino-proxy/img/logo/xiaonuo.png new file mode 100644 index 00000000..941c507b Binary files /dev/null and b/neutrino-proxy/img/logo/xiaonuo.png differ diff --git a/neutrino-proxy/img/logo/xiaonuo2.png b/neutrino-proxy/img/logo/xiaonuo2.png new file mode 100644 index 00000000..b40e5dee Binary files /dev/null and b/neutrino-proxy/img/logo/xiaonuo2.png differ diff --git a/neutrino-proxy/img/logo/zyplayer-doc.png b/neutrino-proxy/img/logo/zyplayer-doc.png new file mode 100644 index 00000000..a9e29681 Binary files /dev/null and b/neutrino-proxy/img/logo/zyplayer-doc.png differ diff --git a/neutrino-proxy/img/more.png b/neutrino-proxy/img/more.png new file mode 100644 index 00000000..830613ba Binary files /dev/null and b/neutrino-proxy/img/more.png differ diff --git a/neutrino-proxy/img/other.png b/neutrino-proxy/img/other.png new file mode 100644 index 00000000..87f80989 Binary files /dev/null and b/neutrino-proxy/img/other.png differ diff --git a/neutrino-proxy/img/panda-waving.png b/neutrino-proxy/img/panda-waving.png new file mode 100644 index 00000000..20246c60 Binary files /dev/null and b/neutrino-proxy/img/panda-waving.png differ diff --git a/neutrino-proxy/img/png/思维导图.png b/neutrino-proxy/img/png/思维导图.png new file mode 100644 index 00000000..819ef70b Binary files /dev/null and b/neutrino-proxy/img/png/思维导图.png differ diff --git a/neutrino-proxy/img/png/数据库.png b/neutrino-proxy/img/png/数据库.png new file mode 100644 index 00000000..4d13c3f2 Binary files /dev/null and b/neutrino-proxy/img/png/数据库.png differ diff --git a/neutrino-proxy/img/png/数据结构.png b/neutrino-proxy/img/png/数据结构.png new file mode 100644 index 00000000..1bafe966 Binary files /dev/null and b/neutrino-proxy/img/png/数据结构.png differ diff --git a/neutrino-proxy/img/png/服务器.png b/neutrino-proxy/img/png/服务器.png new file mode 100644 index 00000000..4127eb56 Binary files /dev/null and b/neutrino-proxy/img/png/服务器.png differ diff --git a/neutrino-proxy/img/png/机器学习.png b/neutrino-proxy/img/png/机器学习.png new file mode 100644 index 00000000..081c2b88 Binary files /dev/null and b/neutrino-proxy/img/png/机器学习.png differ diff --git a/neutrino-proxy/img/png/算法.png b/neutrino-proxy/img/png/算法.png new file mode 100644 index 00000000..92fef3f6 Binary files /dev/null and b/neutrino-proxy/img/png/算法.png differ diff --git a/neutrino-proxy/img/png/系统.png b/neutrino-proxy/img/png/系统.png new file mode 100644 index 00000000..87f0de0a Binary files /dev/null and b/neutrino-proxy/img/png/系统.png differ diff --git a/neutrino-proxy/img/png/系统分析.png b/neutrino-proxy/img/png/系统分析.png new file mode 100644 index 00000000..208e2597 Binary files /dev/null and b/neutrino-proxy/img/png/系统分析.png differ diff --git a/neutrino-proxy/img/png/编程.png b/neutrino-proxy/img/png/编程.png new file mode 100644 index 00000000..a8bca769 Binary files /dev/null and b/neutrino-proxy/img/png/编程.png differ diff --git a/neutrino-proxy/img/png/网络技术.png b/neutrino-proxy/img/png/网络技术.png new file mode 100644 index 00000000..f81edb71 Binary files /dev/null and b/neutrino-proxy/img/png/网络技术.png differ diff --git a/neutrino-proxy/img/png/计算机网络.png b/neutrino-proxy/img/png/计算机网络.png new file mode 100644 index 00000000..63a1819f Binary files /dev/null and b/neutrino-proxy/img/png/计算机网络.png differ diff --git a/neutrino-proxy/img/png/软件开发.png b/neutrino-proxy/img/png/软件开发.png new file mode 100644 index 00000000..72c5e852 Binary files /dev/null and b/neutrino-proxy/img/png/软件开发.png differ diff --git a/neutrino-proxy/img/png/面向对象.png b/neutrino-proxy/img/png/面向对象.png new file mode 100644 index 00000000..cd13fa3c Binary files /dev/null and b/neutrino-proxy/img/png/面向对象.png differ diff --git a/neutrino-proxy/img/png/项目管理.png b/neutrino-proxy/img/png/项目管理.png new file mode 100644 index 00000000..0467abd5 Binary files /dev/null and b/neutrino-proxy/img/png/项目管理.png differ diff --git a/neutrino-proxy/img/python.png b/neutrino-proxy/img/python.png new file mode 100644 index 00000000..c3ddebeb Binary files /dev/null and b/neutrino-proxy/img/python.png differ diff --git a/neutrino-proxy/img/qrcode/gzh.jpg b/neutrino-proxy/img/qrcode/gzh.jpg new file mode 100644 index 00000000..6d0f980c Binary files /dev/null and b/neutrino-proxy/img/qrcode/gzh.jpg differ diff --git a/neutrino-proxy/img/qrcode/qqq.webp b/neutrino-proxy/img/qrcode/qqq.webp new file mode 100644 index 00000000..87940a5d Binary files /dev/null and b/neutrino-proxy/img/qrcode/qqq.webp differ diff --git a/neutrino-proxy/img/qrcode/wxq.png b/neutrino-proxy/img/qrcode/wxq.png new file mode 100644 index 00000000..8a867cd3 Binary files /dev/null and b/neutrino-proxy/img/qrcode/wxq.png differ diff --git a/neutrino-proxy/img/qrcode/wxzs.jpg b/neutrino-proxy/img/qrcode/wxzs.jpg new file mode 100644 index 00000000..67c90769 Binary files /dev/null and b/neutrino-proxy/img/qrcode/wxzs.jpg differ diff --git a/neutrino-proxy/img/qrcode/wxzz.jpg b/neutrino-proxy/img/qrcode/wxzz.jpg new file mode 100644 index 00000000..53afbedc Binary files /dev/null and b/neutrino-proxy/img/qrcode/wxzz.jpg differ diff --git a/neutrino-proxy/img/qrcode/zfbzz.jpg b/neutrino-proxy/img/qrcode/zfbzz.jpg new file mode 100644 index 00000000..b8f94c0b Binary files /dev/null and b/neutrino-proxy/img/qrcode/zfbzz.jpg differ diff --git a/neutrino-proxy/img/run-example/client-connect-log1.png b/neutrino-proxy/img/run-example/client-connect-log1.png new file mode 100644 index 00000000..361956e5 Binary files /dev/null and b/neutrino-proxy/img/run-example/client-connect-log1.png differ diff --git a/neutrino-proxy/img/run-example/client-run1.png b/neutrino-proxy/img/run-example/client-run1.png new file mode 100644 index 00000000..70617015 Binary files /dev/null and b/neutrino-proxy/img/run-example/client-run1.png differ diff --git a/neutrino-proxy/img/run-example/home.png b/neutrino-proxy/img/run-example/home.png new file mode 100644 index 00000000..524e0a3a Binary files /dev/null and b/neutrino-proxy/img/run-example/home.png differ diff --git a/neutrino-proxy/img/run-example/job-log1.png b/neutrino-proxy/img/run-example/job-log1.png new file mode 100644 index 00000000..4e87eedb Binary files /dev/null and b/neutrino-proxy/img/run-example/job-log1.png differ diff --git a/neutrino-proxy/img/run-example/job-manager1.png b/neutrino-proxy/img/run-example/job-manager1.png new file mode 100644 index 00000000..3e174bf1 Binary files /dev/null and b/neutrino-proxy/img/run-example/job-manager1.png differ diff --git a/neutrino-proxy/img/run-example/license-flow-month1.png b/neutrino-proxy/img/run-example/license-flow-month1.png new file mode 100644 index 00000000..76f39b99 Binary files /dev/null and b/neutrino-proxy/img/run-example/license-flow-month1.png differ diff --git a/neutrino-proxy/img/run-example/license-flow1.png b/neutrino-proxy/img/run-example/license-flow1.png new file mode 100644 index 00000000..7caedbc4 Binary files /dev/null and b/neutrino-proxy/img/run-example/license-flow1.png differ diff --git a/neutrino-proxy/img/run-example/license1.png b/neutrino-proxy/img/run-example/license1.png new file mode 100644 index 00000000..07d00748 Binary files /dev/null and b/neutrino-proxy/img/run-example/license1.png differ diff --git a/neutrino-proxy/img/run-example/license2.png b/neutrino-proxy/img/run-example/license2.png new file mode 100644 index 00000000..613f9acc Binary files /dev/null and b/neutrino-proxy/img/run-example/license2.png differ diff --git a/neutrino-proxy/img/run-example/login-log1.png b/neutrino-proxy/img/run-example/login-log1.png new file mode 100644 index 00000000..73d97036 Binary files /dev/null and b/neutrino-proxy/img/run-example/login-log1.png differ diff --git a/neutrino-proxy/img/run-example/neutrino-proxy-process.jpg b/neutrino-proxy/img/run-example/neutrino-proxy-process.jpg new file mode 100644 index 00000000..83550a6a Binary files /dev/null and b/neutrino-proxy/img/run-example/neutrino-proxy-process.jpg differ diff --git a/neutrino-proxy/img/run-example/port-group1.png b/neutrino-proxy/img/run-example/port-group1.png new file mode 100644 index 00000000..3c2acaaa Binary files /dev/null and b/neutrino-proxy/img/run-example/port-group1.png differ diff --git a/neutrino-proxy/img/run-example/port-mapping1.png b/neutrino-proxy/img/run-example/port-mapping1.png new file mode 100644 index 00000000..9e44009d Binary files /dev/null and b/neutrino-proxy/img/run-example/port-mapping1.png differ diff --git a/neutrino-proxy/img/run-example/port-mapping2.png b/neutrino-proxy/img/run-example/port-mapping2.png new file mode 100644 index 00000000..4b326eb9 Binary files /dev/null and b/neutrino-proxy/img/run-example/port-mapping2.png differ diff --git a/neutrino-proxy/img/run-example/port-pool1.png b/neutrino-proxy/img/run-example/port-pool1.png new file mode 100644 index 00000000..0400e2e9 Binary files /dev/null and b/neutrino-proxy/img/run-example/port-pool1.png differ diff --git a/neutrino-proxy/img/run-example/question_3_1.png b/neutrino-proxy/img/run-example/question_3_1.png new file mode 100644 index 00000000..8f4a01ab Binary files /dev/null and b/neutrino-proxy/img/run-example/question_3_1.png differ diff --git a/neutrino-proxy/img/run-example/security-group1.png b/neutrino-proxy/img/run-example/security-group1.png new file mode 100644 index 00000000..88180fa5 Binary files /dev/null and b/neutrino-proxy/img/run-example/security-group1.png differ diff --git a/neutrino-proxy/img/run-example/security-rule1.png b/neutrino-proxy/img/run-example/security-rule1.png new file mode 100644 index 00000000..2fb87cb5 Binary files /dev/null and b/neutrino-proxy/img/run-example/security-rule1.png differ diff --git a/neutrino-proxy/img/run-example/user-flow-month1.png b/neutrino-proxy/img/run-example/user-flow-month1.png new file mode 100644 index 00000000..0b6254e3 Binary files /dev/null and b/neutrino-proxy/img/run-example/user-flow-month1.png differ diff --git a/neutrino-proxy/img/run-example/user-flow1.png b/neutrino-proxy/img/run-example/user-flow1.png new file mode 100644 index 00000000..daa0eaa2 Binary files /dev/null and b/neutrino-proxy/img/run-example/user-flow1.png differ diff --git a/neutrino-proxy/img/run-example/user-manager1.png b/neutrino-proxy/img/run-example/user-manager1.png new file mode 100644 index 00000000..7afd7dae Binary files /dev/null and b/neutrino-proxy/img/run-example/user-manager1.png differ diff --git a/neutrino-proxy/img/sponsor/7bu.ico b/neutrino-proxy/img/sponsor/7bu.ico new file mode 100644 index 00000000..7dc50635 Binary files /dev/null and b/neutrino-proxy/img/sponsor/7bu.ico differ diff --git a/neutrino-proxy/img/sponsor/xigexiaobao.jpg b/neutrino-proxy/img/sponsor/xigexiaobao.jpg new file mode 100644 index 00000000..d4a05b9a Binary files /dev/null and b/neutrino-proxy/img/sponsor/xigexiaobao.jpg differ diff --git a/neutrino-proxy/img/sponsor/zyplayer-doc.jpg b/neutrino-proxy/img/sponsor/zyplayer-doc.jpg new file mode 100644 index 00000000..379224c1 Binary files /dev/null and b/neutrino-proxy/img/sponsor/zyplayer-doc.jpg differ diff --git a/neutrino-proxy/img/sponsor/zyplayer-doc.png b/neutrino-proxy/img/sponsor/zyplayer-doc.png new file mode 100644 index 00000000..ba6ef621 Binary files /dev/null and b/neutrino-proxy/img/sponsor/zyplayer-doc.png differ diff --git a/neutrino-proxy/img/ui.png b/neutrino-proxy/img/ui.png new file mode 100644 index 00000000..617c56d7 Binary files /dev/null and b/neutrino-proxy/img/ui.png differ diff --git a/neutrino-proxy/img/web.png b/neutrino-proxy/img/web.png new file mode 100644 index 00000000..0a6e27c4 Binary files /dev/null and b/neutrino-proxy/img/web.png differ diff --git a/neutrino-proxy/index.html b/neutrino-proxy/index.html new file mode 100644 index 00000000..ed8f1953 --- /dev/null +++ b/neutrino-proxy/index.html @@ -0,0 +1,99 @@ + + + + + + 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/markmap/01.html b/neutrino-proxy/markmap/01.html new file mode 100644 index 00000000..a3bc2d1b --- /dev/null +++ b/neutrino-proxy/markmap/01.html @@ -0,0 +1,126 @@ + + + + + + + + Markmap + + + + + + + + + + + + diff --git a/neutrino-proxy/pages/1ab20b/index.html b/neutrino-proxy/pages/1ab20b/index.html new file mode 100644 index 00000000..f0d2550f --- /dev/null +++ b/neutrino-proxy/pages/1ab20b/index.html @@ -0,0 +1,69 @@ + + + + + + 个人赞赏 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/1b12ed/index.html b/neutrino-proxy/pages/1b12ed/index.html new file mode 100644 index 00000000..73c8ee71 --- /dev/null +++ b/neutrino-proxy/pages/1b12ed/index.html @@ -0,0 +1,69 @@ + + + + + + 支持这个项目 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/1cc523/index.html b/neutrino-proxy/pages/1cc523/index.html new file mode 100644 index 00000000..e8ba0ee6 --- /dev/null +++ b/neutrino-proxy/pages/1cc523/index.html @@ -0,0 +1,84 @@ + + + + + + 添加摘要 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/269a2e/index.html b/neutrino-proxy/pages/269a2e/index.html new file mode 100644 index 00000000..87903701 --- /dev/null +++ b/neutrino-proxy/pages/269a2e/index.html @@ -0,0 +1,95 @@ + + + + + + 域名映射 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/2d4123/index.html b/neutrino-proxy/pages/2d4123/index.html new file mode 100644 index 00000000..44f37892 --- /dev/null +++ b/neutrino-proxy/pages/2d4123/index.html @@ -0,0 +1,80 @@ + + + + + + 使用docker-compose部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/2f674a/index.html b/neutrino-proxy/pages/2f674a/index.html new file mode 100644 index 00000000..75bc27d0 --- /dev/null +++ b/neutrino-proxy/pages/2f674a/index.html @@ -0,0 +1,82 @@ + + + + + + 项目结构 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/31d253/index.html b/neutrino-proxy/pages/31d253/index.html new file mode 100644 index 00000000..7697d454 --- /dev/null +++ b/neutrino-proxy/pages/31d253/index.html @@ -0,0 +1,72 @@ + + + + + + 客户端连接服务端失败 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/3216b0/index.html b/neutrino-proxy/pages/3216b0/index.html new file mode 100644 index 00000000..fdfd2405 --- /dev/null +++ b/neutrino-proxy/pages/3216b0/index.html @@ -0,0 +1,90 @@ + + + + + + front matter配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/441163/index.html b/neutrino-proxy/pages/441163/index.html new file mode 100644 index 00000000..0c99e0b4 --- /dev/null +++ b/neutrino-proxy/pages/441163/index.html @@ -0,0 +1,76 @@ + + + + + + Vue项目出现Invalid Host header 的解决方案 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/50ce10/index.html b/neutrino-proxy/pages/50ce10/index.html new file mode 100644 index 00000000..a0ce386d --- /dev/null +++ b/neutrino-proxy/pages/50ce10/index.html @@ -0,0 +1,113 @@ + + + + + + 客户端配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/54651a/index.html b/neutrino-proxy/pages/54651a/index.html new file mode 100644 index 00000000..11fa5f6c --- /dev/null +++ b/neutrino-proxy/pages/54651a/index.html @@ -0,0 +1,105 @@ + + + + + + 目录页配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/5b9bef/index.html b/neutrino-proxy/pages/5b9bef/index.html new file mode 100644 index 00000000..91470520 --- /dev/null +++ b/neutrino-proxy/pages/5b9bef/index.html @@ -0,0 +1,90 @@ + + + + + + 使用docker容器化部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/5d571c/index.html b/neutrino-proxy/pages/5d571c/index.html new file mode 100644 index 00000000..4d07abf8 --- /dev/null +++ b/neutrino-proxy/pages/5d571c/index.html @@ -0,0 +1,68 @@ + + + + + + 企业登记案例 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/68badb/index.html b/neutrino-proxy/pages/68badb/index.html new file mode 100644 index 00000000..9d1ec931 --- /dev/null +++ b/neutrino-proxy/pages/68badb/index.html @@ -0,0 +1,72 @@ + + + + + + 关于端口 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/69699a/index.html b/neutrino-proxy/pages/69699a/index.html new file mode 100644 index 00000000..8bde12b5 --- /dev/null +++ b/neutrino-proxy/pages/69699a/index.html @@ -0,0 +1,97 @@ + + + + + + 原生部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/793dcb/index.html b/neutrino-proxy/pages/793dcb/index.html new file mode 100644 index 00000000..d8f12098 --- /dev/null +++ b/neutrino-proxy/pages/793dcb/index.html @@ -0,0 +1,71 @@ + + + + + + 快速上手 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/793dcc/index.html b/neutrino-proxy/pages/793dcc/index.html new file mode 100644 index 00000000..ec67e256 --- /dev/null +++ b/neutrino-proxy/pages/793dcc/index.html @@ -0,0 +1,73 @@ + + + + + + 后台操作指南 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/7b990f/index.html b/neutrino-proxy/pages/7b990f/index.html new file mode 100644 index 00000000..b9a39e51 --- /dev/null +++ b/neutrino-proxy/pages/7b990f/index.html @@ -0,0 +1,72 @@ + + + + + + udp代理无效 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/7dcba8/index.html b/neutrino-proxy/pages/7dcba8/index.html new file mode 100644 index 00000000..f982627d --- /dev/null +++ b/neutrino-proxy/pages/7dcba8/index.html @@ -0,0 +1,70 @@ + + + + + + 服务端原声包启动,db初始化异常 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/99a300/index.html b/neutrino-proxy/pages/99a300/index.html new file mode 100644 index 00000000..0fcecbd3 --- /dev/null +++ b/neutrino-proxy/pages/99a300/index.html @@ -0,0 +1,71 @@ + + + + + + HTTPS配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/a20ce8/index.html b/neutrino-proxy/pages/a20ce8/index.html new file mode 100644 index 00000000..adda6239 --- /dev/null +++ b/neutrino-proxy/pages/a20ce8/index.html @@ -0,0 +1,139 @@ + + + + + + 主题配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/a3f096/index.html b/neutrino-proxy/pages/a3f096/index.html new file mode 100644 index 00000000..b63d02af --- /dev/null +++ b/neutrino-proxy/pages/a3f096/index.html @@ -0,0 +1,72 @@ + + + + + + 如何贡献 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/acdf0a/index.html b/neutrino-proxy/pages/acdf0a/index.html new file mode 100644 index 00000000..11b9067e --- /dev/null +++ b/neutrino-proxy/pages/acdf0a/index.html @@ -0,0 +1,71 @@ + + + + + + 2024年 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/cded59/index.html b/neutrino-proxy/pages/cded59/index.html new file mode 100644 index 00000000..dc8ce29f --- /dev/null +++ b/neutrino-proxy/pages/cded59/index.html @@ -0,0 +1,70 @@ + + + + + + 2023年 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/ce175c/index.html b/neutrino-proxy/pages/ce175c/index.html new file mode 100644 index 00000000..f6e9cc2b --- /dev/null +++ b/neutrino-proxy/pages/ce175c/index.html @@ -0,0 +1,70 @@ + + + + + + 评论栏 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/dd027d/index.html b/neutrino-proxy/pages/dd027d/index.html new file mode 100644 index 00000000..fb7f8cdb --- /dev/null +++ b/neutrino-proxy/pages/dd027d/index.html @@ -0,0 +1,84 @@ + + + + + + 实现原理 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/dda8e5/index.html b/neutrino-proxy/pages/dda8e5/index.html new file mode 100644 index 00000000..913bca22 --- /dev/null +++ b/neutrino-proxy/pages/dda8e5/index.html @@ -0,0 +1,71 @@ + + + + + + 1.x | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/e406dd/index.html b/neutrino-proxy/pages/e406dd/index.html new file mode 100644 index 00000000..c136fe85 --- /dev/null +++ b/neutrino-proxy/pages/e406dd/index.html @@ -0,0 +1,70 @@ + + + + + + 里程碑 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/e4c3d7/index.html b/neutrino-proxy/pages/e4c3d7/index.html new file mode 100644 index 00000000..9760c8c9 --- /dev/null +++ b/neutrino-proxy/pages/e4c3d7/index.html @@ -0,0 +1,72 @@ + + + + + + 易混淆的2类证书 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/eebea1/index.html b/neutrino-proxy/pages/eebea1/index.html new file mode 100644 index 00000000..0a61be82 --- /dev/null +++ b/neutrino-proxy/pages/eebea1/index.html @@ -0,0 +1,97 @@ + + + + + + 使用jar部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/f14bdb/index.html b/neutrino-proxy/pages/f14bdb/index.html new file mode 100644 index 00000000..00be64e7 --- /dev/null +++ b/neutrino-proxy/pages/f14bdb/index.html @@ -0,0 +1,101 @@ + + + + + + 首页配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/f2d0f1/index.html b/neutrino-proxy/pages/f2d0f1/index.html new file mode 100644 index 00000000..dd1a3144 --- /dev/null +++ b/neutrino-proxy/pages/f2d0f1/index.html @@ -0,0 +1,122 @@ + + + + + + 服务端配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/f51918/index.html b/neutrino-proxy/pages/f51918/index.html new file mode 100644 index 00000000..b553f1f1 --- /dev/null +++ b/neutrino-proxy/pages/f51918/index.html @@ -0,0 +1,134 @@ + + + + + + 修改主题颜色和样式 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/neutrino-proxy/pages/ff3519/index.html b/neutrino-proxy/pages/ff3519/index.html new file mode 100644 index 00000000..a6d554f0 --- /dev/null +++ b/neutrino-proxy/pages/ff3519/index.html @@ -0,0 +1,74 @@ + + + + + + 2.x | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/1ab20b/index.html b/pages/1ab20b/index.html new file mode 100644 index 00000000..f0d2550f --- /dev/null +++ b/pages/1ab20b/index.html @@ -0,0 +1,69 @@ + + + + + + 个人赞赏 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/1b12ed/index.html b/pages/1b12ed/index.html new file mode 100644 index 00000000..73c8ee71 --- /dev/null +++ b/pages/1b12ed/index.html @@ -0,0 +1,69 @@ + + + + + + 支持这个项目 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/1cc523/index.html b/pages/1cc523/index.html new file mode 100644 index 00000000..e8ba0ee6 --- /dev/null +++ b/pages/1cc523/index.html @@ -0,0 +1,84 @@ + + + + + + 添加摘要 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/269a2e/index.html b/pages/269a2e/index.html new file mode 100644 index 00000000..87903701 --- /dev/null +++ b/pages/269a2e/index.html @@ -0,0 +1,95 @@ + + + + + + 域名映射 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/2d4123/index.html b/pages/2d4123/index.html new file mode 100644 index 00000000..44f37892 --- /dev/null +++ b/pages/2d4123/index.html @@ -0,0 +1,80 @@ + + + + + + 使用docker-compose部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/2f674a/index.html b/pages/2f674a/index.html new file mode 100644 index 00000000..75bc27d0 --- /dev/null +++ b/pages/2f674a/index.html @@ -0,0 +1,82 @@ + + + + + + 项目结构 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/31d253/index.html b/pages/31d253/index.html new file mode 100644 index 00000000..7697d454 --- /dev/null +++ b/pages/31d253/index.html @@ -0,0 +1,72 @@ + + + + + + 客户端连接服务端失败 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/3216b0/index.html b/pages/3216b0/index.html new file mode 100644 index 00000000..fdfd2405 --- /dev/null +++ b/pages/3216b0/index.html @@ -0,0 +1,90 @@ + + + + + + front matter配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/441163/index.html b/pages/441163/index.html new file mode 100644 index 00000000..0c99e0b4 --- /dev/null +++ b/pages/441163/index.html @@ -0,0 +1,76 @@ + + + + + + Vue项目出现Invalid Host header 的解决方案 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/50ce10/index.html b/pages/50ce10/index.html new file mode 100644 index 00000000..a0ce386d --- /dev/null +++ b/pages/50ce10/index.html @@ -0,0 +1,113 @@ + + + + + + 客户端配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/54651a/index.html b/pages/54651a/index.html new file mode 100644 index 00000000..11fa5f6c --- /dev/null +++ b/pages/54651a/index.html @@ -0,0 +1,105 @@ + + + + + + 目录页配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/5b9bef/index.html b/pages/5b9bef/index.html new file mode 100644 index 00000000..91470520 --- /dev/null +++ b/pages/5b9bef/index.html @@ -0,0 +1,90 @@ + + + + + + 使用docker容器化部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/5d571c/index.html b/pages/5d571c/index.html new file mode 100644 index 00000000..4d07abf8 --- /dev/null +++ b/pages/5d571c/index.html @@ -0,0 +1,68 @@ + + + + + + 企业登记案例 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/68badb/index.html b/pages/68badb/index.html new file mode 100644 index 00000000..9d1ec931 --- /dev/null +++ b/pages/68badb/index.html @@ -0,0 +1,72 @@ + + + + + + 关于端口 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/69699a/index.html b/pages/69699a/index.html new file mode 100644 index 00000000..8bde12b5 --- /dev/null +++ b/pages/69699a/index.html @@ -0,0 +1,97 @@ + + + + + + 原生部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/793dcb/index.html b/pages/793dcb/index.html new file mode 100644 index 00000000..d8f12098 --- /dev/null +++ b/pages/793dcb/index.html @@ -0,0 +1,71 @@ + + + + + + 快速上手 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/793dcc/index.html b/pages/793dcc/index.html new file mode 100644 index 00000000..ec67e256 --- /dev/null +++ b/pages/793dcc/index.html @@ -0,0 +1,73 @@ + + + + + + 后台操作指南 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/7b990f/index.html b/pages/7b990f/index.html new file mode 100644 index 00000000..b9a39e51 --- /dev/null +++ b/pages/7b990f/index.html @@ -0,0 +1,72 @@ + + + + + + udp代理无效 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/7dcba8/index.html b/pages/7dcba8/index.html new file mode 100644 index 00000000..f982627d --- /dev/null +++ b/pages/7dcba8/index.html @@ -0,0 +1,70 @@ + + + + + + 服务端原声包启动,db初始化异常 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/99a300/index.html b/pages/99a300/index.html new file mode 100644 index 00000000..0fcecbd3 --- /dev/null +++ b/pages/99a300/index.html @@ -0,0 +1,71 @@ + + + + + + HTTPS配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/a20ce8/index.html b/pages/a20ce8/index.html new file mode 100644 index 00000000..adda6239 --- /dev/null +++ b/pages/a20ce8/index.html @@ -0,0 +1,139 @@ + + + + + + 主题配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/a3f096/index.html b/pages/a3f096/index.html new file mode 100644 index 00000000..b63d02af --- /dev/null +++ b/pages/a3f096/index.html @@ -0,0 +1,72 @@ + + + + + + 如何贡献 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/acdf0a/index.html b/pages/acdf0a/index.html new file mode 100644 index 00000000..11b9067e --- /dev/null +++ b/pages/acdf0a/index.html @@ -0,0 +1,71 @@ + + + + + + 2024年 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/cded59/index.html b/pages/cded59/index.html new file mode 100644 index 00000000..dc8ce29f --- /dev/null +++ b/pages/cded59/index.html @@ -0,0 +1,70 @@ + + + + + + 2023年 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/ce175c/index.html b/pages/ce175c/index.html new file mode 100644 index 00000000..f6e9cc2b --- /dev/null +++ b/pages/ce175c/index.html @@ -0,0 +1,70 @@ + + + + + + 评论栏 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/dd027d/index.html b/pages/dd027d/index.html new file mode 100644 index 00000000..fb7f8cdb --- /dev/null +++ b/pages/dd027d/index.html @@ -0,0 +1,84 @@ + + + + + + 实现原理 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/dda8e5/index.html b/pages/dda8e5/index.html new file mode 100644 index 00000000..913bca22 --- /dev/null +++ b/pages/dda8e5/index.html @@ -0,0 +1,71 @@ + + + + + + 1.x | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/e406dd/index.html b/pages/e406dd/index.html new file mode 100644 index 00000000..c136fe85 --- /dev/null +++ b/pages/e406dd/index.html @@ -0,0 +1,70 @@ + + + + + + 里程碑 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/e4c3d7/index.html b/pages/e4c3d7/index.html new file mode 100644 index 00000000..9760c8c9 --- /dev/null +++ b/pages/e4c3d7/index.html @@ -0,0 +1,72 @@ + + + + + + 易混淆的2类证书 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/eebea1/index.html b/pages/eebea1/index.html new file mode 100644 index 00000000..0a61be82 --- /dev/null +++ b/pages/eebea1/index.html @@ -0,0 +1,97 @@ + + + + + + 使用jar部署 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/f14bdb/index.html b/pages/f14bdb/index.html new file mode 100644 index 00000000..00be64e7 --- /dev/null +++ b/pages/f14bdb/index.html @@ -0,0 +1,101 @@ + + + + + + 首页配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/f2d0f1/index.html b/pages/f2d0f1/index.html new file mode 100644 index 00000000..dd1a3144 --- /dev/null +++ b/pages/f2d0f1/index.html @@ -0,0 +1,122 @@ + + + + + + 服务端配置 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/f51918/index.html b/pages/f51918/index.html new file mode 100644 index 00000000..b553f1f1 --- /dev/null +++ b/pages/f51918/index.html @@ -0,0 +1,134 @@ + + + + + + 修改主题颜色和样式 | 中微子代理 + + + + + + + + + + + +
+ + + diff --git a/pages/ff3519/index.html b/pages/ff3519/index.html new file mode 100644 index 00000000..a6d554f0 --- /dev/null +++ b/pages/ff3519/index.html @@ -0,0 +1,74 @@ + + + + + + 2.x | 中微子代理 + + + + + + + + + + + +
+ + +