[
  {
    "path": ".babelrc",
    "content": "{\n    \"presets\":[\n        \"es2015\"\n    ],\n    \"plugins\":[]\n}\n"
  },
  {
    "path": "README.md",
    "content": "# 前言\ncnblog-mouse 是一个完整的插件，理论上该插件支持所有的 web 项目，本人只针对了博客园做了测试。\n\n# cnblog-mouse\n博客园鼠标特效, 目前收录了12种特效\n\nDEMO参考: [https://www.cnblogs.com/shuiche/](https://www.cnblogs.com/shuiche/)\n\n\n### 部署说明\n#### 上传脚本\n打开./dist文件夹，获取主题的 JS 脚本文件mouse.min.js。\n\n进入[『文件』](https://i.cnblogs.com/Files.aspx)界面，将该文件上传到自己的博客中。上传完成后，点击文件名便可在浏览器地址栏中获取上传文件的外链，类似如下所示：\n\n    https://blog-static.cnblogs.com/files/xuange306/mouse.min.js\n    \n然后使用\\<script>标签将外链包裹，生成一个网页脚本引用，类似如下所示：\n```\n<script src=\"https://blog-static.cnblogs.com/files/xuange306/mouse.min.js\"></script>\n```\n\n### 使用脚本\n进入[『设置』](https://i.cnblogs.com/Configure.aspx)界面，将上面生成的网页脚本引用复制到「页脚 HTML 代码」文本域中。\n\n```js\n<script src=\"https://blog-static.cnblogs.com/files/xuange306/mouse.min.js\"></script>\n<script type=\"text/javascript\">\n    $.shuicheMouse({\n        type:10, \n        color:\"rgba(187,67,128,1)\"\n    })\n</script>\n```\n### 参数说明\n|参数|类型|说明|\n|---|---|---|\n|type| int | 鼠标类型, 赋值 1 ~ 12 任意一个数字, 分别代表12种类型 |\n|color| string/ false | 特效颜色, 如果赋值 false (这里的 false 是 布尔类型), 则会随机一种颜色. string 支持类型(css颜色赋值类型都支持)<br> 1. \"#ffffff\" 类型 <br> 2: rgb(255,255,255) <br> 3: rgba(255,255,255, 0.8)|\n\n### 赞赏\n如果您觉得 cnblog-mouse 鼠标效果做的还不错，或者想对我微小的工作一点激励，欢迎赞赏支持。\n\n![收款码2](https://user-images.githubusercontent.com/10776422/117404632-d9afae80-af3c-11eb-9800-e6ea8c8fe0d4.png)\n\n"
  },
  {
    "path": "cnblogs-theme-silence/README.md",
    "content": "# 博客园主题设置\n\n\n主题部署, 具体参考: [https://github.com/esofar/cnblogs-theme-silence](https://github.com/esofar/cnblogs-theme-silence)\n\n我使用的主题在这个开源库的基础上有一定的修改\n\n1. 将 silence.min.js 上传到博客园\n2. 将 css.css 内容复制到 博客园 -> 设置 -> 页面定制CSS 输入框中\n3. 将下面代码复制到 博客园 -> 设置 -> 博客侧边栏公告 输入框中\n\n```js\n<script src=\"https://blog-static.cnblogs.com/files/xuange306/silence.min.js\"></script>\n<script type=\"text/javascript\">\n    $.silence({\n        avatar: 'https://blog-static.cnblogs.com/files/xuange306/icon.gif',\n        navigation: [\n            {\n                title: '标签',\n                url: 'https://www.cnblogs.com/xuange306/tag/'\n            },\n            {\n                title: '归档',\n                url: 'https://www.cnblogs.com/xuange306/p/'\n            }\n        ],\n        catalog: {\n            enable: true,\n            move: true,\n            index: true,\n            level1: 'h2',\n            level2: 'h3',\n            level3: 'h4',\n        },\n        signature: {\n            enable: true,\n            license: '本博文版权归本博主所有,未经授权不得转载',\n            link: 'https://home.cnblogs.com/u/xuange306',\n            remark: null\n        },\n        sponsor: {\n            enable: true,\n            paypal: null,\n            text:\"打赏一下呗\",\n            wechat: 'https://blog-static.cnblogs.com/files/xuange306/wx.gif',\n            alipay: 'https://blog-static.cnblogs.com/files/xuange306/zfb.gif'\n        },\n        github: {\n            enable: true,\n            link: 'https://github.com/shuiche-it/',\n\t    target: '_self'\n        }\n    });\n</script>\n\n```\n"
  },
  {
    "path": "cnblogs-theme-silence/css.css",
    "content": "html, body {\n\tbackground: #fff;\n\tmin-height: 100%;\n\tcolor: #314659 !important;\n\tfont-family: Lato, \"PingFang SC\", \"Microsoft YaHei\", sans-serif !important\n}\n\na {\n\ttransition: all .3s ease !important\n}\n\na:hover {\n\tcolor: #2D8CF0 !important;\n\ttext-decoration: none !important\n}\n\n#ad_c1, #ad_c2, #ad_t2, #author_profile, #blogCalendar, #blogTitle h2, #comment_form_container p:nth-of-type(3), #comments_pager_top, #green_channel, #homepage_top_pager, #sidebar_imagecategory, #sidebar_postarchive, #sidebar_recentcomments, #sidebar_recentposts, #sidebar_scorerank, #sidebar_search, #sidebar_search .catListTitle, #sidebar_shortcut, #sidebar_topcommentedposts, #tip_comment2, #under_post_kb, #under_post_news, .blogStats, .c_ad_block, .dayTitle {\n\tdisplay: none\n}\n\n#home {\n\twidth: 100%;\n\theight: 100%\n}\n\n#header {\n\twidth: 960px;\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\tmargin: 0 auto;\n\tborder-top: 0;\n\tbackground: #fff;\n\topacity: .95;\n\tborder-bottom: 1px #eef2f8 solid;\n\tpadding-bottom: 0;\n\tdisplay: block;\n\theight: 60px;\n\tz-index: 999\n}\n\n#header #blogTitle {\n\tposition: relative;\n\theight: 60px\n}\n\n#header #blogTitle h1 {\n\tfont-size: 25px;\n\tfont-family: Georgia;\n\twidth: auto;\n\tmargin-left: 0;\n\tmargin-top: 12px\n}\n\n#header #blogTitle h1 a {\n\tcolor: #404040\n}\n\n#header #navigator {\n\theight: inherit;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tbackground-color: transparent;\n\tdisplay: inline-block;\n\tz-index: 999\n}\n\n#header #navList {\n\theight: inherit\n}\n\n#header #navList > li {\n\tposition: relative\n}\n\n#header #navList > li:hover i {\n\twidth: 100%;\n\tleft: 0\n}\n\n#header #navList > li > a:active, #header #navList > li > a:link, #header #navList > li > a:visited {\n\tfont-size: 17px;\n\tpadding-top: 0;\n\tborder-right: 0;\n\tcolor: #314659;\n\tdisplay: block;\n\tfont-weight: 300;\n\twidth: auto;\n\tpadding: 19px 16px;\n\theight: inherit;\n\t-webkit-transition: all .3s;\n\ttransition: all .3s\n}\n\n#header #navList > li > a:hover {\n\tbackground: 0 0\n}\n\n#header #navList > li > i {\n\twidth: 0;\n\theight: 4px;\n\tbackground-color: #2D8CF0;\n\tcontent: \"\";\n\tposition: absolute;\n\tleft: 50%;\n\tbottom: 0;\n\ttransition: 1s\n}\n\n#header #navList .open {\n\ttransform: rotate(180deg) scaleX(-1)\n}\n\n#header #navList .esa-sub-navs {\n\tbackground-color: #fff;\n\tposition: absolute;\n\twidth: 130px;\n\ttop: 65px;\n\tleft: calc(50% - 65px);\n\tborder-radius: 3px;\n\tbox-shadow: 0 1px 15px rgba(27, 31, 35, .15);\n\tdisplay: none;\n\tpadding: 10px\n}\n\n#header #navList .esa-sub-navs li {\n\tfloat: none\n}\n\n#header #navList .esa-sub-navs li a {\n\tfont-size: 15px;\n\tborder-right: 0;\n\tcolor: #314659;\n\tdisplay: block;\n\twidth: 100%;\n\tfont-weight: 300;\n\tpadding: 10px 0;\n\theight: inherit\n}\n\n#header #navList .esa-sub-navs li a:hover {\n\tbackground: 0 0;\n\tcolor: #2D8CF0\n}\n\n#main {\n\twidth: 960px;\n\tmargin: 0 auto;\n\tmin-height: calc(100% - 135px);\n\tpadding: 75px 10px 0 10px;\n\tanimation-name: fadeIn;\n\tanimation-duration: 1s;\n\tanimation-iteration-count: 1;\n\t-webkit-animation-name: fadeIn;\n\t-webkit-animation-duration: 1s;\n\t-webkit-animation-iteration-count: 1\n}\n\n#main #mainContent {\n\tbackground-color: transparent\n}\n\n#main #mainContent .forFlow {\n\tmargin: 0 auto;\n\tmargin-left: 0;\n\tmax-width: 960px\n}\n\n#sideBar {\n\tborder-right: 1px solid #eef2f8;\n\tfont-weight: 300;\n\tdisplay: none;\n\tmin-height: 750px;\n\tpadding: 0 15px 0 0\n}\n\n#sideBar #profile_block {\n\tmargin-top: 10px;\n\tfont-size: 15px\n}\n\n#sideBar #profile_block #p_b_follow {\n\tmargin-top: 10px\n}\n\n#sideBar #profile_block a {\n\tcolor: #314659\n}\n\n.catListTitle {\n\tposition: relative;\n\ttext-align: left;\n\tmargin: 15px 0;\n\tpadding-left: 15px;\n\tfont-size: 20px;\n\tfont-weight: 300;\n\tborder-bottom: none\n}\n\n.catListTitle::before {\n\tcontent: \"\\2662\";\n\tcolor: #314659;\n\tposition: absolute;\n\ttop: 1px;\n\tleft: -2px\n}\n\n#sidebar_toptags li {\n\tfont-size: 14px;\n\theight: 19px;\n\tline-height: 20px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: 5px 8px;\n\tborder: 1px solid #eef2f8;\n\tmargin: 0 6px 6px 0;\n\tdisplay: inline-grid;\n\ttransition: all .3s;\n\tborder-radius: 2px\n}\n\n#sidebar_toptags li a {\n\tcolor: #314659\n}\n\n#sidebar_toptags li:active, #sidebar_toptags li:link, #sidebar_toptags li:visited {\n\tborder-color: #eef2f8\n}\n\n#sidebar_toptags li:hover {\n\tborder-color: #2D8CF0\n}\n\n#sidebar_categories li {\n\tfont-size: 15px;\n\theight: 40px;\n\tpadding-left: 3px;\n\tline-height: 30px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttransition: all .5s;\n\ttext-overflow: ellipsis;\n\tlist-style: inside\n}\n\n#sidebar_categories li:hover {\n\ttransform: translate(10px)\n}\n\n#sidebar_categories li a {\n\tcolor: #314659\n}\n\n#sidebar_topdiggedposts li, #sidebar_topviewedposts li {\n\tfont-size: 15px;\n\tpadding: 10px 0;\n\ttransition: all .3s;\n\ttext-align: justify;\n\tborder-bottom: 1px solid #eef2f8\n}\n\n#sidebar_topdiggedposts li a:active, #sidebar_topdiggedposts li a:hover, #sidebar_topdiggedposts li a:link, #sidebar_topdiggedposts li a:visited, #sidebar_topviewedposts li a:active, #sidebar_topviewedposts li a:hover, #sidebar_topviewedposts li a:link, #sidebar_topviewedposts li a:visited {\n\tcolor: #314659\n}\n\n#taglist_title, .PostListTitle, .entrylistTitle, .myposts_title, .thumbTitle {\n\tpadding-bottom: 3px;\n\tpadding-right: 10px;\n\twidth: 100%;\n\ttext-align: left;\n\tborder-bottom: 0 !important;\n\tfont-size: 20px !important;\n\tfont-weight: 300;\n\tmargin-top: 15px\n}\n\n#myposts {\n\tmargin-left: 0\n}\n\n#myposts .PostList {\n\tfont-size: 14px;\n\tfont-weight: 300;\n\tborder-bottom: 1px solid #eef2f8;\n\tpadding: 5px 0 9px 0;\n\tmargin-right: 0\n}\n\n#myposts .pager:first-of-type {\n\tdisplay: none\n}\n\n#myposts a:link, #myposts a:visited {\n\tcolor: #314659\n}\n\n#myposts .postDesc2 {\n\tcolor: inherit\n}\n\n.day, .entrylistItem {\n\twidth: auto;\n\tborder-bottom: 1px solid #eef2f8;\n\tpadding: 10px 0 15px 0;\n\ttext-align: justify\n}\n\n.day .postSeparator, .entrylistItem .postSeparator {\n\tmargin-top: 15px;\n\tmargin-bottom: 25px;\n\tborder-top: 1px solid #eef2f8\n}\n\n.day .postTitle, .entrylist .entrylistPosttitle {\n\tfont-size: 20px;\n\tfont-weight: 300;\n\tfont-family: inherit;\n\tpadding-left: 0;\n\tborder-bottom: none\n}\n\n.day .postTitle a, .entrylist .entrylistPosttitle a {\n\tcolor: #314659;\n\tfont-size: 24px;\n\tfont-weight: bold;\n}\n\n.day .postCon, .entrylist .entrylistPostSummary {\n\tfont-size: 16px;\n\tfont-weight: 300;\n\tfont-family: inherit;\n\tpadding-left: 0\n}\n\n.day .postCon .c_b_p_desc img, .entrylist .entrylistPostSummary .c_b_p_desc img {\n\theight: 100px;\n\tmargin-left: 10px\n}\n\n.day .postCon .c_b_p_desc a, .entrylist .entrylistPostSummary .c_b_p_desc a {\n\tborder: 1px solid;\n\tborder-radius: 3px;\n\tpadding: 2px 9px;\n\tfont-size: 13px;\n\tmargin-top: 10px;\n\ttext-decoration: none;\n\tdisplay: table;\n\tcolor: #314659;\n\tborder-color: #314659\n}\n\n.day .postCon .c_b_p_desc a:after, .entrylist .entrylistPostSummary .c_b_p_desc a:after {\n\tcontent: \" »\"\n}\n\n.day .postCon .c_b_p_desc a:hover, .entrylist .entrylistPostSummary .c_b_p_desc a:hover {\n\tcolor: #2D8CF0 !important;\n\tborder: 1px solid #2D8CF0\n}\n\n.day .postDesc, .entrylist .entrylistItemPostDesc, .post .postDesc {\n\tfont-size: 13px;\n\tfont-weight: 300;\n\tpadding-right: 0 !important;\n\tcolor: #314659 !important\n}\n\n.day .postDesc a, .entrylist .entrylistItemPostDesc a, .post .postDesc a {\n\tcolor: #314659\n}\n\n.entrylistDescription {\n\tcolor: #314659;\n\tfont-size: 13px;\n\tfont-weight: 300;\n\tpadding-right: 0\n}\n\n#topics .postTitle {\n\tfont-size: 20px;\n\tfont-weight: 300;\n\tpadding-left: 0;\n\tborder-bottom: none\n}\n\n#topics .postTitle a {\n\tcolor: #314659\n}\n\n#topics .postBody {\n\tfont-weight: 300;\n\tfont-size: 16px;\n\tpadding: 10px 0;\n\tline-height: 1.75;\n\tcolor: #314659;\n\tborder-bottom: 1px solid #eef2f8\n}\n\n#topics .postBody a:active, #topics .postBody a:link, #topics .postBody a:visited {\n\tcolor: #2D8CF0;\n\ttext-decoration: none\n}\n\n#topics .postBody h1 {\n\tfont-size: 21px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h1 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody h2 {\n\tfont-size: 20px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h2 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody h3 {\n\tfont-size: 19px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h3 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody h4 {\n\tfont-size: 18px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h4 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody h5 {\n\tfont-size: 17px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h5 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody h6 {\n\tfont-size: 16px !important;\n\tcolor: #314659\n}\n\n#topics .postBody h6 a:not([class=esa-anchor]) {\n\tcolor: inherit !important;\n\ttext-decoration: underline\n}\n\n#topics .postBody p {\n\tmargin: 13px auto\n}\n\n#topics .postBody hr {\n\tborder-left: none;\n\tborder-right: none;\n\tborder-top: none;\n\tborder-bottom: 1px solid #eef2f8\n}\n\n#topics .postBody blockquote {\n\tborder: none;\n\tcolor: #314659;\n\tmargin: 20px 0;\n\tpadding: 0 0 0 10px;\n\tmin-height: 20px;\n\tbackground: 0 0;\n\tline-height: inherit;\n\tborder-left: 4px solid #dde5f1\n}\n\n#topics .postBody em {\n\tpadding-right: 3px\n}\n\n#topics .postBody strong {\n\tmargin: 0 3px;\n\tfont-weight: 500\n}\n\n#topics .postBody img {\n\tmax-width: 960px !important;\n\tdisplay: block;\n\tmargin: 15px 0 30px 0;\n\tborder-radius: 3px;\n\tbox-shadow: 0 1px 15px rgba(27, 31, 35, .15), 0 0 1px rgba(106, 115, 125, .35)\n}\n\n#topics .postBody ol li, #topics .postBody ul li {\n\tmargin: 3px 0;\n\tfont-size: 16px;\n\tcolor: #314659\n}\n\n#topics .postBody ol li p, #topics .postBody ul li p {\n\tmargin: 0 !important\n}\n\n#topics .postBody table {\n\tfont-size: 13px;\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n\tempty-cells: show;\n\tborder: 1px solid #eef2f8;\n\twidth: 100%;\n\tmargin: 13px 0\n}\n\n#topics .postBody table th {\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tbackground: #f7f7f7 !important;\n\twhite-space: nowrap;\n\tfont-weight: 600;\n\tborder: 1px solid #eef2f8 !important;\n\tpadding: 8px 16px !important\n}\n\n#topics .postBody table td {\n\tborder: 1px solid #eef2f8 !important;\n\tpadding: 8px 16px !important\n}\n\n#topics .postBody h1 code, #topics .postBody h2 code, #topics .postBody h3 code, #topics .postBody h4 code, #topics .postBody h5 code, #topics .postBody h6 code, #topics .postBody li code, #topics .postBody p code, #topics .postBody table code {\n\tcolor: #314659;\n\tline-height: 1;\n\tfont-family: consolas !important;\n\tvertical-align: middle;\n\tmargin: 0 3px;\n\tbackground: #f2f4f5 !important;\n\tfont-size: 14px !important;\n\tpadding: .2em .3em !important;\n\tborder-radius: 3px !important;\n\tborder: 1px solid #eee !important\n}\n\n#topics .postBody #BlogPostCategory {\n\tfont-size: 14px;\n\tmargin-bottom: 0\n}\n\n#topics .postBody #BlogPostCategory a {\n\tmargin-left: 5px\n}\n\n#topics .postBody #EntryTag {\n\tfont-size: 14px;\n\tcolor: #314659\n}\n\n#topics .postBody #EntryTag a {\n\tcolor: #2D8CF0\n}\n\n#topics .postBody #post_next_prev {\n\tfont-size: 13px\n}\n\n.cnblogs_code {\n\tbackground-color: #f2f4f5;\n\tpadding-left: 1em;\n\tpadding-right: 1em;\n\tborder: none !important;\n\tborder-radius: 3px !important;\n\tfont-family: Lucida Console, Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace !important\n}\n\n.cnblogs_code div {\n\tbackground-color: transparent;\n\tcolor: #656c73\n}\n\n.cnblogs_code img {\n\tmargin: 0 !important\n}\n\n.cnblogs_code pre {\n\tcolor: #656c73;\n\tfont-family: inherit !important\n}\n\n.cnblogs_code pre span {\n\tfont-family: inherit !important;\n\tcolor: inherit !important\n}\n\n.cnblogs_code textarea {\n\tfont-family: inherit !important;\n\tpadding: 5px;\n\tborder: 1px solid #3e4c42;\n\tcolor: #c5d4ef;\n\tbackground-color: #282c34\n}\n\n.cnblogs_code textarea:focus {\n\toutline: 0\n}\n\n.cnblogs_code .code_img_closed, .cnblogs_code .code_img_opened {\n\tdisplay: none !important\n}\n\n.cnblogs_code .cnblogs_code_toolbar {\n\twidth: 20px\n}\n\n.cnblogs_code .cnblogs_code_toolbar span {\n\tpadding-right: 0\n}\n\n.cnblogs_code .cnblogs_code_toolbar a:link img {\n\tbackground-color: transparent !important\n}\n\n.cnblogs_code .cnblogs_code_collapse {\n\tcolor: #656c73;\n\tborder: 1px solid #989fa6;\n\tborder-radius: 2px;\n\tbackground-color: transparent;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tpadding: 5px 5px 2px 5px\n}\n\n.github-corner svg {\n\tfill: #2D8CF0\n}\n\n#footer {\n\tborder-top: 1px solid #eef2f8;\n\tfont-size: 13px;\n\tfont-weight: 300;\n\tmargin: 10px 0 0 0;\n\tpadding: 10px 0\n}\n\n#footer .esa-copyright a {\n\tcolor: #314659\n}\n\n.cnblogs-markdown pre {\n\twhite-space: pre !important;\n\tposition: relative !important\n}\n\n#taglist_main {\n\tmargin-top: 0\n}\n\n#taglist_main table {\n\twidth: 100%\n}\n\n#taglist_main table tr td {\n\tpadding: 5px 20px 5px 0\n}\n\n#taglist_main table tr td .small {\n\tdisplay: none\n}\n\n#taglist_main table tr td a {\n\tdisplay: block;\n\tfont-size: 14px;\n\tpadding: 5px;\n\tfont-weight: 300;\n\theight: 19px;\n\tline-height: 20px;\n\ttext-align: center;\n\tborder: 1px solid #eef2f8;\n\tborder-radius: 2px;\n\tcolor: #314659\n}\n\n#taglist_main table tr td a:hover {\n\tcolor: #2D8CF0 !important;\n\tborder: 1px solid #2D8CF0;\n\ttext-decoration: none\n}\n\n.topicListFooter {\n\tmargin-right: 0\n}\n\n#nav_next_page, .pager {\n\tmargin-right: 0;\n\tcolor: #314659\n}\n\n#nav_next_page a, .pager a {\n\tpadding: 3px 7px;\n\tborder: 1px solid #314659;\n\tborder-radius: 2px;\n\tmargin: 0 3px;\n\ttext-decoration: none;\n\tcolor: inherit;\n\ttransition: border .2s ease-in-out, color .2s ease-in-out\n}\n\n#nav_next_page a:hover, .pager a:hover {\n\tcolor: #2D8CF0;\n\tborder: 1px solid #2D8CF0\n}\n\n.pager span.current {\n\tpadding: 3px 7px;\n\tborder: 1px solid #2D8CF0;\n\tborder-radius: 4px;\n\tfont-family: Monospaced Number;\n\tmargin: 0 3px;\n\ttext-decoration: none;\n\tbackground-color: #2D8CF0\n}\n\n.esa-clipboard-button {\n\tfont-size: 12px;\n\tcursor: pointer;\n\tposition: absolute;\n\tright: 13px;\n\ttop: 10px;\n\tbox-shadow: 0 0 15px 0 rgba(0, 0, 0, .1);\n\tcolor: #314659;\n\tpadding: 0 6px;\n\tborder-radius: 5px\n}\n\n.esa-toolbar {\n\tposition: fixed;\n\tdisplay: grid;\n\tz-index: 999;\n\tbottom: 30px;\n\tright: 30px\n}\n\n.esa-toolbar .esa-toolbar-contents, .esa-toolbar .esa-toolbar-follow, .esa-toolbar .esa-toolbar-gotop {\n\theight: 45px;\n\twidth: 45px;\n\tfont-weight: 400;\n\tposition: relative;\n\toutline: 0;\n\tcursor: pointer;\n\tborder: 1px solid transparent;\n\ttransition: color .2s linear, background-color .2s linear, border .2s linear, box-shadow .2s linear;\n\tmargin-top: 5px;\n\tborder-color: #eef2f8;\n\tbackground-color: #fff;\n\tbackground-position: center;\n\tbackground-repeat: no-repeat\n}\n\n.esa-toolbar .esa-toolbar-contents:hover, .esa-toolbar .esa-toolbar-follow:hover, .esa-toolbar .esa-toolbar-gotop:hover {\n\tcolor: #2D8CF0;\n\tborder-color: #2D8CF0\n}\n\n.esa-toolbar .esa-toolbar-gotop {\n\tdisplay: none;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAACL0lEQVRIS+3TwWvTUBwH8O/vJSLrFBURFPSkoIiCVz3IilObFA/aNR0yEEk6EXfxH1D0L5DdyroMHaJL1a1Ikw3H6kVBHHjyIKKgMEQmbOqsTpv8JOkmna4mvQyRvVv4/fL78L7vPcIKLFoBA6tIUyn/e3H1F+xjYB4B8EyGp53RTkxF2VLkneQLTieYBwmQ/cEMfgsJh41U8k0YFAnJW3YPAb2Afxv5CZj2gdAK8BQgjuia8uJvUCiSt+wrBFxaGOJ8WYeTsQr2kscTAG1k5g+eJLV1dySeN4IaIsxMpuXkQMjW4kFh55aW0/F4vOp/D9wZ2+N67gQB25h5RmJx/Gyn8nQ5aFmk17bXtn7mGyDSAoBh6ppiEBHXDzFvje3wpADaxcAcGAkjoz76HfoDyVkPNsj44QA4GDQzrukZ9WKjKK7fG99crX4vA9gP8FePhJpNKw/r+5cgfXft7cLFOIDdCxFdNjT1atjt6S8W12NeHgXoEAPzgEgZWqK0+N8vZMAqHfAAB6CtzOwBlDUyqhkGLNYt63HLJ8zaBLQxUCWQpmvKsF8PEHNotN0jt0igGBjfIHBKT6t+ZE0t/yxjc3yfQEcBdplEl5FWblOfZWcE+CZAEgMfSXC73pGcbGp6XXMuN7lG3vR+GKBkcGeIz1N+qDRIRF1RH1YUvFwuy6+nKyM1iGepluVMtytJ1rlU4l2UIVF6fOjVdOUCs3gZ+uKjDAzrWUXCElpS/3/i+gn3gM6tu0xSdwAAAABJRU5ErkJggg==)\n}\n\n.esa-toolbar .esa-toolbar-contents {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAuUlEQVRIS2NkoANgpIMdDPSxZO6qbQeQffOf+X98SrD3w0WLdnL/5vi7lRo+ZZy7att/ZIMYGRi0k8K8rs1ctZufheH3B6pYMnv1dgdkg/5x/DmV7uv7bdWqVcwfGXltqWIJNQwhZAZ9Ip6QK6ghP4x8Mnfl1gaUJMzIODUpzOv1pG3b2Lk//6+kSnDRJZ/QxSfUCA5CZgyj1EXIq9SQp09w0aUUpk8+oUelRY2IJWQGfSKekCuoIQ8At39XNxqN1mQAAAAASUVORK5CYII=)\n}\n\n.esa-toolbar .esa-toolbar-follow {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAsUlEQVRIS2NkIAHMXbU98D/D/zn/GRlTU0M91xGrlZFYhSB1c1Zu62RkZChj+M/QmxzuVUKs3lFLRoOLcFoZTV30ySdzV29zY2BgtGT494+ghf8ZGF0YGRmskXP8pG3b2Lm/MqQx/PsvjBGrTEz/Gf8xHmWcs3LrC0ZGRnHC0Y6kAqlYmbNyqx0jI+NBnPr/M/xgpKlPwDYzPiUYRMguHE3Co8E1WtQTzvPDJ5+Q2+4CADezs7EkSK8aAAAAAElFTkSuQmCC)\n}\n\n.esa-profile-avatar {\n\tmargin-top: 15px;\n\tborder-radius: 3px;\n\twidth: 100%\n}\n\n.esa-follow-button {\n\tz-index: 999;\n\tdisplay: none;\n\tposition: fixed;\n\tbottom: 30px;\n\tright: 30px;\n\theight: 45px;\n\twidth: 45px;\n\tfont-weight: 400;\n\toutline: 0;\n\tcursor: pointer;\n\tborder: 1px solid transparent;\n\twhite-space: nowrap;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\tfont-size: 12px;\n\tborder-radius: 50px;\n\tcolor: #515a6e;\n\tbackground-color: #fff;\n\tborder-color: #dcdee2\n}\n\n.esa-follow-button:hover {\n\tcolor: #2D8CF0;\n\tborder-color: #2D8CF0;\n\tbackground-color: #fff\n}\n\n.esa-mobile-menu {\n\tdisplay: none;\n\tposition: fixed;\n\ttop: 7px;\n\tright: 15px;\n\tz-index: 941113;\n\tfont-size: 1.5em;\n\tcursor: pointer;\n\tcolor: #7f7f7f\n}\n\n.esa-mobile-menu:after {\n\tcontent: \"\\2630\";\n\tfont-size: 1.5em;\n\tfont-family: fontello\n}\n\n.esa-search-btn {\n\tdisplay: block;\n\tpadding: 14px 0;\n\tcursor: pointer\n}\n\n.esa-search-close {\n\tdisplay: none;\n\tpadding: 14px 0;\n\tcursor: pointer\n}\n\n.esa-search-box {\n\tdisplay: none;\n\tposition: fixed;\n\ttop: 61px;\n\theight: auto;\n\tpadding: 10px 0;\n\tbackground-color: #fff;\n\twidth: 960px;\n\ttext-align: center;\n\tborder-bottom: 1px #eef2f8 solid;\n\tz-index: 999\n}\n\n.esa-search-box .input_my_zzk {\n\tcolor: #314659;\n\tborder: solid 1px #eef2f8;\n\twidth: 45%;\n\theight: 32px;\n\tpadding: 0 7px;\n\tborder-right: none;\n\tfont-size: 16px;\n\tfont-weight: 300;\n\tborder-radius: 2px 0 0 2px;\n\toutline: 0;\n\tbackground-color: #fff\n}\n\n.esa-search-box .btn_my_zzk {\n\theight: 34px;\n\tfont-size: 14px;\n\tfont-weight: 300;\n\tmargin-left: -5px;\n\tbackground-color: #2D8CF0;\n\tborder: none;\n\tcolor: #fff;\n\tcursor: pointer;\n\twidth: 75px;\n\toutline: 0\n}\n\n.esa-catalog {\n\tposition: fixed;\n\ttop: 120px;\n\tright: 1px;\n\twidth: auto;\n\theight: auto;\n\tz-index: 1000\n}\n\n.esa-catalog-title {\n\tcursor: move;\n\tpadding-left: 12px;\n\twidth: 100%;\n\theight: 35px;\n\tline-height: 36px;\n\tborder-bottom: 1px solid #eef2f8;\n\tfont-size: 12px;\n\tfont-weight: 600;\n\tcolor: #314659\n}\n\n.esa-catalog-title:before {\n\tcontent: \"\\2632\";\n\tmargin-right: 5px\n}\n\n.esa-catalog-close {\n\tposition: absolute;\n\tright: 15px;\n\ttop: 10px;\n\tcursor: pointer\n}\n\n.esa-catalog-contents {\n\toverflow: hidden;\n\tdisplay: none;\n\tcolor: #314659;\n\tborder: 1px solid #eef2f8;\n\tmin-width: 150px;\n\topacity: 1;\n\tfont-size: inherit;\n\tfont-weight: 300;\n\tbackground-color: #fff;\n\tz-index: 19941112\n}\n\n.esa-catalog-contents ul {\n\tpadding: 10px 15px;\n\tmax-height: 350px;\n\toverflow-y: auto\n}\n\n.esa-catalog-contents ul li {\n\tmargin-top: 5px;\n\tmax-width: 160px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tcursor: pointer;\n\tcolor: #314659\n}\n\n.esa-catalog-contents ul li code {\n\tfont-family: inherit\n}\n\n.esa-catalog-contents ul li a:hover {\n\tcolor: #2D8CF0;\n\ttext-decoration: none\n}\n\n.esa-catalog-contents ul li .level1 {\n\tmargin-left: 0\n}\n\n.esa-catalog-contents ul li .level2 {\n\tmargin-left: 10px\n}\n\n.esa-catalog-contents ul li .level3 {\n\tmargin-left: 26px\n}\n\n.esa-anchor {\n\topacity: 0;\n\t-webkit-transition: opacity .3s ease;\n\ttransition: opacity .3s ease;\n\tmargin-left: 8px\n}\n\n.esa-post-signature {\n\tpadding: 12px 24px 12px 30px;\n\tmargin-top: 15px;\n\tmargin-left: 5px;\n\tborder-left-width: 4px;\n\tfont-size: 15px;\n\tline-height: 2;\n\tborder-left-style: solid;\n\tbackground-color: #f8f8f8;\n\tposition: relative;\n\tborder-bottom-right-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-left-color: #2D8CF0;\n\tz-index: 1\n}\n\n.esa-post-signature:before {\n\tcontent: \"!\";\n\tbackground-color: #2D8CF0;\n\tposition: absolute;\n\ttop: 25px;\n\tleft: -12px;\n\tcolor: #fff;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 100%;\n\ttext-align: center;\n\tline-height: 20px;\n\tfont-weight: 700;\n\tfont-size: 14px\n}\n\n.esa-post-signature p {\n\tmargin: 0 !important\n}\n\n.esa-post-signature a {\n\tcolor: #314659 !important\n}\n\n.esa-layer {\n\tposition: fixed;\n\ttop: 70px;\n\ttext-align: center;\n\tline-height: 25px;\n\tfont-size: 15px;\n\tfont-family: inherit;\n\twidth: 100%;\n\tdisplay: none;\n\tz-index: 9999999\n}\n\n.esa-layer-content {\n\tposition: relative;\n\tbackground: rgba(0, 0, 0, .7);\n\tmax-width: 250px;\n\tpadding: 5px 10px;\n\tfont-size: 14px;\n\tborder-radius: 5px;\n\tcolor: #e0e0e0;\n\tdisplay: inline-block\n}\n\n#div_digg {\n\tposition: static;\n\tfloat: none;\n\tmargin: 35px auto 85px auto;\n\tz-index: -1;\n\twidth: 200px\n}\n\n#div_digg .buryit, #div_digg .diggit {\n\tbackground: #fff;\n\tmargin: 0;\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: 32px;\n\tborder-width: 0;\n\tcursor: pointer;\n\tcolor: #fff;\n\tuser-select: none;\n\tpadding: 0 10px;\n\tborder-radius: 5px;\n\ttransition: color .2s linear, background-color .2s linear, border .2s linear, box-shadow .2s linear\n}\n\n#div_digg .diggit {\n\tbackground-color: #18b566;\n\tborder-color: #18b566\n}\n\n#div_digg .diggit:hover {\n\tbackground-color: #47cb89;\n\tborder-color: #47cb89\n}\n\n#div_digg .buryit {\n\tbackground-color: #ed4014;\n\tborder-color: #ed4014\n}\n\n#div_digg .buryit:hover {\n\tbackground-color: #f16643;\n\tborder-color: #f16643\n}\n\n#div_digg .buryit .burynum, #div_digg .diggit .diggnum {\n\tcolor: snow;\n\tdisplay: inline-block;\n\tfont-size: 15px;\n\tposition: relative;\n\ttop: 5px;\n\twidth: 65px\n}\n\n#div_digg .diggit .diggnum:before {\n\tcontent: \"\\63a8\\8350\";\n\tfont-size: 15px;\n\tmargin-right: 5px\n}\n\n#div_digg .buryit .burynum:before {\n\tcontent: \"\\53cd\\5bf9\";\n\tfont-size: 15px;\n\tmargin-right: 5px\n}\n\n.feedbackItem .feedbackListSubtitle {\n\tcolor: transparent\n}\n\n.feedbackItem .feedbackListSubtitle .sendMsg2This {\n\tbackground: 0 0;\n\tpadding-left: 0;\n\tfont-size: 15px\n}\n\n.feedbackItem .feedbackListSubtitle .sendMsg2This::before {\n\tcontent: \"✉️\"\n}\n\n.feedbackItem a {\n\tcolor: #314659\n}\n\n.feedbackItem .louzhu {\n\tbackground: #2D8CF0 !important;\n\tcolor: #fff;\n\tborder-radius: 2px;\n\tmargin: 0 2px;\n\tpadding: 0 6px 2px 6px !important\n}\n\n.feedbackItem .comment_date {\n\tcolor: #666\n}\n\n.feedbackItem .comment_quote {\n\tborder: 1px dashed #2D8CF0;\n\tborder-radius: 3px\n}\n\n#comment_nav {\n\tvisibility: hidden\n}\n\n.feedbackItem .feedbackCon {\n\tbackground: 0 0;\n\tpadding: 10px 0 10px 0;\n\tborder-bottom: 1px solid #eef2f8\n}\n\n.feedbackItem .feedbackCon .esa-comment-avatar {\n\tfloat: left\n}\n\n.feedbackItem .feedbackCon .esa-comment-avatar img {\n\tborder-radius: 50%;\n\ttransition: all .5s ease-out;\n\t-webkit-transition: all .6s ease-out;\n\t-moz-transition: all .5s ease-out;\n\t-ms-transition: all .5s ease-out;\n\t-o-transition: all .5s ease-out\n}\n\n.feedbackItem .feedbackCon .esa-comment-avatar img:hover {\n\t-webkit-transform: rotateZ(360deg);\n\t-moz-transform: rotateZ(360deg);\n\t-ms-transform: rotateZ(360deg);\n\t-o-transform: rotateZ(360deg);\n\ttransform: rotateZ(360deg)\n}\n\n.feedbackItem .feedbackCon .blog_comment_body {\n\tfont-size: 14px;\n\tfont-weight: 300;\n\tborder-radius: 3px;\n\tpadding: 10px;\n\tmargin-left: 55px;\n\tcolor: #314659;\n\tbackground-color: rgba(193, 193, 193, .2)\n}\n\n.feedbackItem .feedbackCon .blog_comment_body a {\n\tcolor: #2D8CF0\n}\n\n.feedbackItem .feedbackCon .blog_comment_body img {\n\tborder-radius: 3px\n}\n\n.feedbackItem .feedbackCon .comment_vote {\n\tmargin-top: 12px\n}\n\n.feedback_area_title {\n\tborder-bottom: 1px solid #eef2f8;\n\tmargin-bottom: 15px;\n\tfont-size: 20px;\n\tfont-weight: 300;\n\tpadding-left: 0;\n\tpadding-bottom: 5px\n}\n\n.commentform #commentform_title {\n\tbackground-image: none;\n\tpadding-left: 0;\n\tfont-size: 20px\n}\n\n.commentform #tip_comment {\n\tcolor: #f37f7f !important;\n\tmargin: 15px 0;\n\tdisplay: block\n}\n\n.commentform .commentbox_title {\n\tborder-bottom: 1px solid #eef2f8;\n\tfont-size: 14px;\n\tfont-weight: 300\n}\n\n.commentform .commentbox_title .commentbox_title_left .commentbox_tab.active, .commentform .commentbox_title .commentbox_title_left .commentbox_tab:hover {\n\tborder-bottom: 2px solid #2D8CF0;\n\tcolor: #2D8CF0\n}\n\n.commentform .commentbox_title .commentbox_title_right .comment_svg:hover, .commentform .commentbox_title .commentbox_title_right .comment_svg_stroke:hover {\n\tfill: #2D8CF0\n}\n\n.commentform .comment_textarea {\n\twidth: 100%;\n\tborder: 1px solid #eef2f8;\n\tbackground-color: transparent;\n\tcolor: #314659\n}\n\n.commentform .comment_textarea:focus {\n\toutline: 0\n}\n\n.commentform .comment_textarea:hover {\n\tborder-color: #2D8CF0\n}\n\n.commentform #tbCommentBody {\n\tcolor: #314659;\n\tbackground-color: transparent\n}\n\n.commentform .feedbackCon {\n\tborder-bottom: 1px solid #eef2f8;\n\tbackground: 0 0;\n\tpadding: 0\n}\n\n.commentform .comment_preview p {\n\tfont-size: 15px;\n\tfont-weight: 300\n}\n\n.commentform #commentbox_opt {\n\tdisplay: block\n}\n\n.commentform #commentbox_opt a {\n\tcolor: #314659\n}\n\n.commentform #btn_comment_submit {\n\twidth: auto;\n\theight: auto;\n\tborder-width: 0;\n\tcursor: pointer;\n\tcolor: #fff;\n\tbackground-color: #2D8CF0;\n\tborder-color: #2D8CF0;\n\tfont-weight: 300;\n\tuser-select: none;\n\tpadding: 5px 20px;\n\tfont-size: 12px;\n\tborder-radius: 5px;\n\toutline: 0;\n\ttransition: all .3s\n}\n\n.commentform #btn_comment_submit:hover {\n\topacity: .7\n}\n\n.commentform .comment_my_posted > img {\n\tdisplay: none\n}\n\n.commentform .comment_my_posted > a b {\n\tfont-size: 16px;\n\tfont-weight: 300\n}\n\n.commentform .bq_post_comment {\n\tmargin-top: 5px;\n\tfont-size: 13px;\n\tdisplay: block;\n\tcolor: #314659;\n\tbackground-color: rgba(193, 193, 193, .2);\n\tborder: none;\n\tborder-radius: 3px\n}\n\n.github-corner:hover .octo-arm {\n\tanimation: octocat-wave 560ms ease-in-out\n}\n\n@keyframes octocat-wave {\n\t0%, 100% {\n\t\ttransform: rotate(0)\n\t}\n\t20%, 60% {\n\t\ttransform: rotate(-25deg)\n\t}\n\t40%, 80% {\n\t\ttransform: rotate(10deg)\n\t}\n}\n\n::-webkit-scrollbar {\n\twidth: 3px;\n\theight: 3px\n}\n\n::-webkit-scrollbar-thumb {\n\tborder-radius: 1px;\n\tbox-shadow: inset 0 0 5px #314659;\n\tbackground: #314659\n}\n\n::-webkit-scrollbar-track {\n\tbackground: 0 0;\n\tborder-radius: 1px\n}\n\n::-moz-selection, ::selection {\n\tcolor: #2D8CF0\n}\n\n@keyframes fadeIn {\n\t0% {\n\t\topacity: 0\n\t}\n\t100% {\n\t\topacity: 1\n\t}\n}\n\n@media screen and (min-width: 768px) and (max-width: 980px) {\n\t#blog-comments-placeholder, #comment_form {\n\t\tpadding: 10px;\n\t\tmargin-left: 0\n\t}\n}\n\n@media only screen and (max-width: 767px) {\n\t#home {\n\t\tfont-size: 12px !important\n\t}\n\n\t#mainContent .forFlow {\n\t\tpadding-top: 15px\n\t}\n\n\t#sideBar, .esa-catalog, .postDesc {\n\t\tdisplay: none\n\t}\n\n\t.postBody {\n\t\tpadding: 0 !important\n\t}\n\n\t#main {\n\t\tmargin-top: 60px;\n\t\tpadding: 0 15px !important\n\t}\n\n\t#topics .postTitle {\n\t\tpadding-left: 0 !important;\n\t\tpadding-top: 10px\n\t}\n\n\t#cnblogs_post_body table {\n\t\tdisplay: table !important\n\t}\n\n\t#cnblogs_post_body img {\n\t\twidth: 100%;\n\t\tbox-shadow: 0 0 10px #c4c4c4;\n\t\tmax-width: none !important\n\t}\n\n\t#comment_nav, #commentbox_main {\n\t\tmargin: 0\n\t}\n\n\t#comment_form {\n\t\tpadding: 5px;\n\t\tmargin-left: 0\n\t}\n\n\t.esa-mobile-menu {\n\t\tdisplay: block\n\t}\n\n\t.forFlow {\n\t\tmargin-right: 0;\n\t\tmargin-left: 0 !important\n\t}\n\n\t#header {\n\t\twidth: auto\n\t}\n\n\t#header #navigator {\n\t\tdisplay: none;\n\t\twidth: 100%;\n\t\tmargin-top: 60px\n\t}\n\n\t#navList {\n\t\twidth: inherit\n\t}\n\n\t#navList li {\n\t\tfloat: none\n\t}\n\n\t#navList li #blog_nav_tags {\n\t\tdisplay: block !important\n\t}\n\n\t#navList a:active, #navList a:link, #navList a:visited {\n\t\twidth: 100%;\n\t\tbackground-color: #2c3e50;\n\t\tcolor: #fff !important;\n\t\tpadding: 15px 0\n\t}\n\n\t#navList a:hover {\n\t\tcolor: #2D8CF0;\n\t\tbackground-color: #2c3e50 !important\n\t}\n\n\t.feedbackItem .feedbackManage {\n\t\twidth: auto\n\t}\n\n\t.github-corner {\n\t\tdisplay: none\n\t}\n}\n\n@media only screen and (max-width: 410px) {\n\t#div_digg {\n\t\tdisplay: grid;\n\t\twidth: 100%\n\t}\n\n\t#div_digg .buryit, #div_digg .diggit, #div_digg .favorite {\n\t\tmargin: 5px 0\n\t}\n}\n\n[data-tips] {\n\toverflow: hidden\n}\n\n[data-tips]:hover {\n\toverflow: visible\n}\n\n[data-tips]::after, [data-tips]::before {\n\tposition: absolute;\n\ttransition: all .3s;\n\ttransform: translate3d(-50%, 0, 0);\n\topacity: 0;\n\tleft: 37px;\n\tz-index: 10\n}\n\n[data-tips]::before {\n\tcontent: attr(data-tips);\n\tborder-radius: 6px;\n\tbackground-color: rgba(100, 100, 100, .8);\n\tcolor: #fff;\n\theight: 24px;\n\tline-height: 24px;\n\tpadding: 0 6px;\n\tfont-size: 12px;\n\twhite-space: nowrap;\n\ttop: -24px;\n\tleft: 50%\n}\n\n[data-tips]::after {\n\tcontent: \"\";\n\tborder: 5px solid #333;\n\tborder-color: rgba(100, 100, 100, .8) transparent transparent transparent;\n\ttop: 0;\n\tleft: 50%\n}\n\n[data-tips]:hover::after, [data-tips]:hover::before {\n\topacity: 1\n}\n\n[data-tips]:hover::after, [data-tips]:hover::before {\n\ttransform: translate3d(-50%, -7px, 0)\n}\n\n.esa-sponsor {\n\tposition: relative;\n\twidth: 100%;\n\tmargin-top: 70px;\n\theight: 160px\n}\n\n.esa-sponsor .posa {\n\tposition: absolute\n}\n\n.esa-sponsor .tr3 {\n\ttransition: all .3s\n}\n\n.esa-sponsor .blur {\n\t-webkit-filter: blur(3px);\n\tfilter: blur(3px)\n}\n\n.esa-sponsor .text {\n\tposition: absolute;\n\tleft: calc(50% - 120px);\n\ttop: calc(50% - 60px);\n\tfont-size: 12px;\n\twidth: 70px;\n\theight: 70px;\n\tline-height: 70px;\n\tcolor: #fff;\n\tbackground: #ffd886 url(http://images.cnblogs.com/cnblogs_com/esofar/1504962/o_like.png) no-repeat center 10px;\n\tbackground-size: 20px;\n\tborder-radius: 35px;\n\ttext-align: center;\n\tz-index: -1;\n\ttransform: rotatez(-15deg)\n}\n\n.esa-sponsor .github {\n\tposition: absolute;\n\tleft: calc(50% + 135px);\n\ttop: calc(50% - 30px);\n\twidth: 24px;\n\theight: 24px;\n\tbackground: no-repeat center center url(http://images.cnblogs.com/cnblogs_com/esofar/1504962/o_github.png);\n\tbackground-size: contain;\n\topacity: .3;\n\ttransform: rotatez(15deg)\n}\n\n.esa-sponsor .box {\n\tleft: calc(50% - 150px);\n\ttop: calc(50% - 15px);\n\tbackground-color: #fff;\n\tborder: 1px solid #ddd;\n\tborder-radius: 6px;\n\twidth: 299px;\n\theight: 28px;\n\tfloat: left;\n\tz-index: 1;\n\tmargin-left: 0\n}\n\n.esa-sponsor .box li {\n\twidth: 99px;\n\tfloat: left;\n\tmargin: 0 !important;\n\ttext-align: center;\n\tborder-left: 1px solid #ddd;\n\tbackground: no-repeat center center;\n\tbackground-color: rgba(204, 217, 220, .1);\n\tbackground-size: 45px;\n\ttransition: all .3s;\n\tcursor: pointer;\n\toverflow: hidden;\n\tline-height: 600px;\n\theight: 28px;\n\t-webkit-filter: grayscale(1);\n\tfilter: grayscale(1);\n\topacity: .5;\n\tlist-style: none;\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0\n}\n\n.esa-sponsor .box li:hover {\n\tbackground-color: rgba(204, 217, 220, .3);\n\t-webkit-filter: grayscale(0);\n\tfilter: grayscale(0);\n\topacity: 1\n}\n\n.esa-sponsor .box li:first-child {\n\tborder-width: 0\n}\n\n.esa-sponsor .box li a {\n\tdisplay: block\n}\n\n.esa-sponsor .box .paypal {\n\tbackground-image: url(http://images.cnblogs.com/cnblogs_com/esofar/1504962/o_paypal.png)\n}\n\n.esa-sponsor .box .alipay {\n\tbackground-image: url(http://images.cnblogs.com/cnblogs_com/esofar/1504962/o_alipay.png)\n}\n\n.esa-sponsor .box .wechat {\n\tbackground-image: url(http://images.cnblogs.com/cnblogs_com/esofar/1504962/o_wechat.png)\n}\n\n.esa-sponsor #QRBox {\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1;\n\tdisplay: none;\n\tperspective: 400px;\n\twidth: 100%;\n\theight: 100%\n}\n\n.esa-sponsor #QRBox #MainBox {\n\tcursor: pointer;\n\tposition: absolute;\n\ttext-align: center;\n\twidth: 200px;\n\theight: 200px;\n\tleft: calc(50% - 100px);\n\ttop: calc(50% - 100px);\n\tbackground: #fff no-repeat center center;\n\tbackground-size: 190px;\n\tborder-radius: 6px;\n\tbox-shadow: 0 2px 7px rgba(0, 0, 0, .3);\n\topacity: 0;\n\ttransition: all 1s ease-in-out;\n\ttransform-style: preserve-3d;\n\ttransform-origin: center center;\n\toverflow: hidden\n}\n\n.esa-sponsor #MainBox.showQR {\n\topacity: 1;\n\tanimation-name: showQR;\n\tanimation-duration: 3s;\n\tanimation-timing-function: ease-in-out;\n\tanimation-iteration-count: 1;\n\tanimation-fill-mode: forwards;\n\t-webkit-animation: showQR 3s ease-in-out 0s 1 normal forwards\n}\n\n@keyframes showQR {\n\tfrom {\n\t\ttransform: rotateX(90deg)\n\t}\n\t8% {\n\t\topacity: 1;\n\t\ttransform: rotateX(-60deg)\n\t}\n\t18% {\n\t\topacity: 1;\n\t\ttransform: rotateX(40deg)\n\t}\n\t34% {\n\t\topacity: 1;\n\t\ttransform: rotateX(-28deg)\n\t}\n\t44% {\n\t\topacity: 1;\n\t\ttransform: rotateX(18deg)\n\t}\n\t58% {\n\t\topacity: 1;\n\t\ttransform: rotateX(-12deg)\n\t}\n\t72% {\n\t\topacity: 1;\n\t\ttransform: rotateX(9deg)\n\t}\n\t88% {\n\t\topacity: 1;\n\t\ttransform: rotateX(-5deg)\n\t}\n\t96% {\n\t\topacity: 1;\n\t\ttransform: rotateX(2deg)\n\t}\n\tto {\n\t\topacity: 1\n\t}\n}\n\n.esa-sponsor #MainBox.hideQR {\n\topacity: 1;\n\tanimation-name: hideQR;\n\tanimation-duration: .5s;\n\tanimation-timing-function: ease-in-out;\n\tanimation-iteration-count: 1;\n\tanimation-fill-mode: forwards;\n\t-webkit-animation: hideQR .5s ease-in-out 0s 1 normal forwards\n}\n\n@keyframes hideQR {\n\t20%, 50% {\n\t\ttransform: scale(1.08, 1.08);\n\t\topacity: 1\n\t}\n\tto {\n\t\topacity: 0;\n\t\ttransform: rotateZ(40deg) scale(.6, .6)\n\t}\n}\n\n::-moz-selection, ::selection {\n\tbackground-color: #2D8CF0;\n\tcolor: #e1e1e1\n}\n\n.cnblogs-markdown .hljs {\n\tdisplay: block;\n\tcolor: #333;\n\toverflow-x: auto;\n\tbackground: #F2F4F5 !important;\n\tborder: none !important;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace !important;\n\tpadding: 1em !important;\n\tfont-size: 14px !important\n}\n\n.hljs-comment, .hljs-meta {\n\tcolor: #969896\n}\n\n.hljs-emphasis, .hljs-quote, .hljs-string, .hljs-strong, .hljs-template-variable, .hljs-variable {\n\tcolor: #df5000\n}\n\n.hljs-keyword, .hljs-selector-tag, .hljs-type {\n\tcolor: #a71d5d\n}\n\n.hljs-attribute, .hljs-bullet, .hljs-literal, .hljs-symbol {\n\tcolor: #0086b3\n}\n\n.hljs-name, .hljs-section {\n\tcolor: #63a35c\n}\n\n.hljs-tag {\n\tcolor: #333\n}\n\n.hljs-attr, .hljs-selector-attr, .hljs-selector-class, .hljs-selector-id, .hljs-selector-pseudo, .hljs-title {\n\tcolor: #795da3\n}\n\n.hljs-addition {\n\tcolor: #55a532;\n\tbackground-color: #eaffea\n}\n\n.hljs-deletion {\n\tcolor: #bd2c00;\n\tbackground-color: #ffecec\n}\n\n.hljs-link {\n\ttext-decoration: underline\n}\n\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"name\": \"cnblogs-mouse\",\n    \"version\": \"0.0.1\",\n    \"description\": \"一款专注于博客园鼠标样式的主题\",\n    \"main\": \"index.js\",\n    \"scripts\": {\n        \"theme-default\": \"lessc ./src/themes/default.less ./dist/themes/default.min.css -clean-css\",\n        \"theme-dark\": \"lessc ./src/themes/dark.less ./dist/themes/dark.min.css -clean-css\",\n        \"theme-goddess\": \"lessc ./src/themes/goddess.less ./dist/themes/goddess.min.css -clean-css\",\n        \"script\": \"babel src/mouse.js -o src/mouse.es5.js && uglifyjs src/mouse.es5.js -o dist/mouse.min.js -c -m\",\n        \"build\": \"npm run script & npm run theme-default & npm run theme-dark & npm run theme-goddess\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/esofar/cnblogs-theme-silence.git\"\n    },\n    \"keywords\": [],\n    \"author\": \"Esofar\",\n    \"license\": \"TIM\",\n    \"bugs\": {\n        \"url\": \"https://github.com/esofar/cnblogs-theme-silence/issues\"\n    },\n    \"homepage\": \"https://github.com/esofar/cnblogs-theme-silence#readme\",\n    \"devDependencies\": {\n        \"babel-cli\": \"^6.26.0\",\n        \"babel-preset-es2015\": \"^6.24.1\",\n        \"less\": \"^3.9.0\",\n        \"less-plugin-clean-css\": \"^1.5.1\",\n        \"uglify-js\": \"^3.6.0\"\n    },\n    \"dependencies\": {}\n}\n"
  },
  {
    "path": "src/mouse.js",
    "content": "(function ($) {\n    $.extend({\n        shuicheMouse: (options) => {\n            var silence = new Silence();\n            silence.init(options);\n        }\n    });\n\n    class Silence {\n        constructor() {\n            this.defaluts = {\n                type: 1,\n                color: false,\n            };\n\n            this.version = '0.0.1';\n        }\n\n        get cnblogs() {\n            return {\n                canvase: '#shuicheCanvase',\n            };\n        }\n\n        /**\n         * 初始化\n         * @param {Object} options 全局配置选项\n         */\n        init(options) {\n\n            (function () {\n                var lastTime = 0;\n                var vendors = ['webkit', 'moz'];\n                for (var xx = 0; xx < vendors.length && !window.requestAnimationFrame; ++xx) {\n                    window.requestAnimationFrame = window[vendors[xx] + 'RequestAnimationFrame'];\n                    window.cancelAnimationFrame = window[vendors[xx] + 'CancelAnimationFrame'] ||\n                        window[vendors[xx] + 'CancelRequestAnimationFrame'];\n                }\n\n                if (!window.requestAnimationFrame) {\n                    window.requestAnimationFrame = function (callback, element) {\n                        var currTime = new Date().getTime();\n                        var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));\n                        var id = window.setTimeout(function () {\n                            callback(currTime + timeToCall);\n                        }, timeToCall);\n                        lastTime = currTime + timeToCall;\n                        return id;\n                    };\n                }\n                if (!window.cancelAnimationFrame) {\n                    window.cancelAnimationFrame = function (id) {\n                        clearTimeout(id);\n                    };\n                }\n            }());\n\n            if (options) {\n                $.extend(true, this.defaluts, options);\n            }\n            //创建 canvas 标签\n            var canvas = $(\"<canvas id='shuicheCanvas' style='position: fixed; left: 0px; top: 0px; z-index: 2147483647;pointer-events:none;'></canvas>\");\n            //var canvas=$(\"<canvas id='shuicheCanvas'></canvas>\");\n            $(\"body\").append(canvas);\n\n            let typeId = this.defaluts.type;\n\n            if (typeId >= 1 && typeId < 11) {\n                this.mouseType1(this.defaluts.type, this.defaluts.color);\n            }\n            if (typeId == 11) {\n                this.mouseType2()\n            }\n            if (typeId == 12) {\n                this.mouseType3()\n            }\n\n        }\n\n        mouseType1(type, myColor) {\n            var canvas = document.getElementById(\"shuicheCanvas\");\n            var ctx = canvas.getContext(\"2d\");\n            var c = $(\"#shuicheCanvas\");\n            var x, y, w, h, cx, cy, l;\n            var y = [];\n            var b = {\n                n: 100,\n                c: 222,    //  颜色  如果是false 则是随机渐变颜色\n                bc: '#fff',   //  背景颜色\n                r: 0.9,\n                o: 0.05,\n                a: 1,\n                s: 20,\n            }\n            var bx = 0, by = 0, vx = 0, vy = 0;\n            var td = 0;\n            var p = 0;\n            var hs = 0;\n            re();\n            var color = Math.random() * 360;\n            var color2;\n\n            if (myColor) {\n                color2 = myColor;\n            } else {\n                color2 = 'hsl(' + color + ',100%,80%)';\n            }\n            $(window).resize(function () {\n                re();\n            });\n            var tp = type;\n\n            //每一帧渲染都会执行此函数\n            function begin() {\n                if (tp == 1) {\n                    ctx.clearRect(0, 0, w, h);\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.fillStyle = color2;\n                        ctx.beginPath();\n                        ctx.arc(y[i].x, y[i].y, y[i].r, 0, Math.PI * 2);\n                        ctx.closePath();\n                        ctx.fill();\n                        y[i].r += b.r;\n                        y[i].o -= b.o;\n                        if (y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 2) {\n                    ctx.clearRect(0, 0, w, h);\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.fillStyle = color2;\n                        ctx.beginPath();\n                        y[i].r = 10;\n                        ctx.shadowBlur = 20;\n                        ctx.shadowColor = color2;\n                        ctx.arc(y[i].x, y[i].y, y[i].r, 0, Math.PI * 2);\n                        ctx.closePath();\n                        ctx.fill();\n                        ctx.shadowBlur = 0;\n                        y[i].o -= b.o;\n                        y[i].v += b.a;\n                        y[i].y += y[i].v;\n                        if (y[i].y >= h + y[i].r || y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 3) {\n                    td += 5;\n                    ctx.clearRect(0, 0, w, h);\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.fillStyle = color2;\n                        ctx.beginPath();\n                        ctx.shadowBlur = 20;\n                        ctx.shadowColor = color2;\n                        y[i].r = (1 - (y[i].y / h)) * 20;\n                        ctx.arc(y[i].x, y[i].y, y[i].r, 0, Math.PI * 2);\n                        ctx.closePath();\n                        ctx.fill();\n                        ctx.shadowBlur = 0;\n                        y[i].o = y[i].y / h;\n                        y[i].v += b.a;\n                        y[i].y -= b.s;\n                        y[i].x += (Math.cos((y[i].y + td) / 100) * 10);\n                        if (y[i].y <= 0 - y[i].r || y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 4) {\n                    ctx.clearRect(0, 0, w, h);\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.fillStyle = color2;\n                        ctx.beginPath();\n                        ctx.shadowBlur = 20;\n                        ctx.shadowColor = color2;\n                        y[i].vx2 += (cx - y[i].wx) / 1000;\n                        y[i].vy2 += (cy - y[i].wy) / 1000;\n                        y[i].wx += y[i].vx2;\n                        y[i].wy += y[i].vy2;\n                        y[i].o -= b.o / 2;\n                        y[i].r = 10;\n                        ctx.arc(y[i].wx, y[i].wy, y[i].r, 0, Math.PI * 2);\n                        ctx.closePath();\n                        ctx.fill();\n                        ctx.shadowBlur = 0;\n                        if (y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 5) {\n                    if (!b.c) {\n                        color += .1;\n                        color2 = 'hsl(' + color + ',100%,80%)';\n                    }\n                    ctx.clearRect(0, 0, w, h);\n\n                    p += 10;\n                    ctx.globalAlpha = 1;\n                    ctx.fillStyle = color2;\n\n                    ctx.shadowBlur = 20;\n                    ctx.shadowColor = color2;\n\n                    ctx.beginPath();\n                    ctx.arc(cx + 50 * Math.cos(p * Math.PI / 180), cy + 50 * Math.sin(p * Math.PI / 180), 10, 0, Math.PI * 2);\n                    ctx.closePath();\n                    ctx.fill();\n\n                    ctx.beginPath();\n                    ctx.arc(cx + 50 * Math.cos((p + 180) * Math.PI / 180), cy + 50 * Math.sin((p + 180) * Math.PI / 180), 10, 0, Math.PI * 2);\n                    ctx.closePath();\n                    ctx.fill();\n                    ctx.beginPath();\n                    ctx.arc(cx + 50 * Math.cos((p + 90) * Math.PI / 180), cy + 50 * Math.sin((p + 90) * Math.PI / 180), 10, 0, Math.PI * 2);\n                    ctx.closePath();\n                    ctx.fill();\n                    ctx.beginPath();\n                    ctx.arc(cx + 50 * Math.cos((p + 270) * Math.PI / 180), cy + 50 * Math.sin((p + 270) * Math.PI / 180), 10, 0, Math.PI * 2);\n                    ctx.closePath();\n                    ctx.fill();\n                    ctx.shadowBlur = 0;\n                } else if (tp == 6) {\n                    ctx.clearRect(0, 0, w, h);\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.strokeStyle = color2;\n                        ctx.beginPath();\n                        ctx.lineWidth = 2;\n                        ctx.moveTo(y[i].x, y[i].y);\n                        ctx.lineTo((y[i].wx + y[i].x) / 2 + Math.random() * 20, (y[i].wy + y[i].y) / 2 + Math.random() * 20);\n                        ctx.lineTo(y[i].wx, y[i].wy);\n                        ctx.closePath();\n                        ctx.stroke();\n                        y[i].o -= b.o;\n                        if (y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 7) {\n                    ctx.clearRect(0, 0, w, h);\n\n                    if (y.length < b.n * 2) {\n                        hs = Math.random() * 2 * Math.PI;\n                        y.push({\n                            x: cx + ((Math.random() - .5) * 100 * Math.cos(hs)),\n                            y: cy + ((Math.random() - .5) * 100 * Math.cos(hs)),\n                            o: 1,\n                            h: hs\n                        });\n                    }\n                    for (var i = 0; i < y.length; i++) {\n                        ctx.globalAlpha = y[i].o;\n                        ctx.fillStyle = color2;\n                        ctx.beginPath();\n                        y[i].x += (cx - y[i].x) / 10;\n                        y[i].y += (cy - y[i].y) / 10;\n                        ctx.arc(y[i].x, y[i].y, 1, 0, Math.PI * 2);\n                        ctx.closePath();\n                        ctx.fill();\n                        y[i].o -= b.o;\n                        if (y[i].o <= 0) {\n                            y[i].h = Math.random() * 2 * Math.PI;\n                            y[i].x = cx + ((Math.random() - .5) * 100 * Math.cos(y[i].h));\n                            y[i].y = cy + ((Math.random() - .5) * 100 * Math.sin(y[i].h));\n                            y[i].o = 1;\n                        }\n                        ;\n                    }\n                } else if (tp == 8) {\n                    ctx.clearRect(0, 0, w, h);\n\n                    ctx.fillStyle = color2;\n                    if (cx % 4 == 0) {\n                        cx += 1;\n                    } else if (cx % 4 == 2) {\n                        cx -= 1\n                    } else if (cx % 4 == 3) {\n                        cx -= 2\n                    }\n                    if (cy % 4 == 0) {\n                        cy += 1;\n                    } else if (cy % 4 == 2) {\n                        cy -= 1\n                    } else if (cy % 4 == 3) {\n                        cy -= 2\n                    }\n                    for (var i = cx - 60; i < cx + 60; i += 4) {\n                        for (var j = cy - 60; j < cy + 60; j += 4) {\n                            if (Math.sqrt(Math.pow(cx - i, 2) + Math.pow(cy - j, 2)) <= 60) {\n                                ctx.globalAlpha = 1 - (Math.sqrt(Math.pow(cx - i, 2) + Math.pow(cy - j, 2)) / 60);\n                                if (Math.random() < .2) {\n                                    ctx.fillRect(i, j, 3, 3);\n                                }\n                            }\n                        }\n                    }\n                } else if (tp == 9) {\n                    ctx.clearRect(0, 0, w, h);\n                    ctx.fillStyle = color2;\n                    if (cx % 4 == 0) {\n                        cx += 1;\n                    } else if (cx % 4 == 2) {\n                        cx -= 1\n                    } else if (cx % 4 == 3) {\n                        cx -= 2\n                    }\n                    if (cy % 4 == 0) {\n                        cy += 1;\n                    } else if (cy % 4 == 2) {\n                        cy -= 1\n                    } else if (cy % 4 == 3) {\n                        cy -= 2\n                    }\n                    if (y.length < b.n) {\n                        y.push({x: cx, y: cy, xv: 0, yv: 0, o: 1});\n                    }\n                    for (var i = 0; i < y.length; i++) {\n                        if (y[i].xv == 0 && y[i].yv == 0) {\n                            if (Math.random() < .5) {\n                                if (Math.random() < .5) {\n                                    y[i].xv = 3;\n                                } else {\n                                    y[i].xv = -3;\n                                }\n                            } else {\n                                if (Math.random() < .5) {\n                                    y[i].yv = 3;\n                                } else {\n                                    y[i].yv = -3;\n                                }\n                            }\n                        } else {\n                            if (y[i].xv == 0) {\n                                if (Math.random() < .66) {\n                                    y[i].yv = 0;\n                                    if (Math.random() < .5) {\n                                        y[i].xv = 3;\n                                    } else {\n                                        y[i].xv = -3;\n                                    }\n                                }\n                            } else if (y[i].yv == 0) {\n                                if (Math.random() < .66) {\n                                    y[i].xv = 0;\n                                    if (Math.random() < .5) {\n                                        y[i].yv = 3;\n                                    } else {\n                                        y[i].yv = -3;\n                                    }\n                                }\n                            }\n                        }\n                        y[i].o -= b.o / 2;\n                        ctx.globalAlpha = y[i].o;\n                        y[i].x += y[i].xv;\n                        y[i].y += y[i].yv;\n                        ctx.fillRect(y[i].x, y[i].y, 3, 3);\n                        if (y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                } else if (tp == 10) {\n                    ctx.clearRect(0, 0, w, h);\n\n                    ctx.fillStyle = color2;\n                    y.push({x: cx, y: cy, xv: 2, yv: 1, o: 1});\n\n                    for (var i = 0; i < y.length; i++) {\n                        y[i].o -= b.o / 10;\n                        ctx.globalAlpha = y[i].o;\n                        y[i].x += (Math.random() - .5) * 4;\n                        y[i].y -= 1;\n                        ctx.fillRect(y[i].x, y[i].y, 2, 2);\n                        if (y[i].o <= 0) {\n                            y.splice(i, 1);\n                            i--;\n                        }\n                        ;\n                    }\n                }\n                window.requestAnimationFrame(begin);\n            }\n\n            function re() {\n                w = window.innerWidth;\n                h = window.innerHeight;\n                canvas.width = w;\n                canvas.height = h;\n                cx = w / 2;\n                cy = h / 2;\n            };\n            $(window).mousemove(function (e) {\n                cx = e.pageX - c.offset().left;\n                cy = e.pageY - c.offset().top;\n                if (tp == 4) {\n                    if (Math.random() <= .5) {\n                        if (Math.random() <= .5) {\n                            bx = -10;\n                        } else {\n                            bx = w + 10;\n                        }\n                        by = Math.random() * h;\n                    } else {\n                        if (Math.random() <= .5) {\n                            by = -10;\n                        } else {\n                            by = h + 10;\n                        }\n                        bx = Math.random() * w;\n                    }\n                    vx = (Math.random() - .5) * 8;\n                    vy = (Math.random() - .5) * 8;\n                }\n                if (tp == 1 || tp == 2 || tp == 3) {\n                    y.push({x: cx, y: cy, r: b.r, o: 1, v: 0});\n                } else if (tp == 4) {\n                    y.push({x: cx, y: cy, r: b.r, o: 1, v: 0, wx: bx, wy: by, vx2: vx, vy2: vy});\n                } else if (tp == 6) {\n                    y.push({\n                        x: cx + ((Math.random() - .5) * 30),\n                        y: cy + ((Math.random() - .5) * 30),\n                        o: 1,\n                        wx: cx,\n                        wy: cy\n                    });\n                }\n            });\n\n            begin();\n        }\n\n        mouseType2() {\n            var SCREEN_WIDTH = window.innerWidth;\n            var SCREEN_HEIGHT = window.innerHeight;\n\n            var RADIUS = 70;\n\n            var RADIUS_SCALE = 1;\n            var RADIUS_SCALE_MIN = 1;\n            var RADIUS_SCALE_MAX = 1.5;\n\n            var QUANTITY = 25;\n\n            var canvas;\n            var context;\n            var particles;\n\n            var mouseX = SCREEN_WIDTH * 0.5;\n            var mouseY = SCREEN_HEIGHT * 0.5;\n            var mouseIsDown = false;\n\n            function init() {\n                canvas = document.getElementById('shuicheCanvas');\n                if (canvas && canvas.getContext) {\n                    context = canvas.getContext('2d');\n                    // Register event listeners\n                    window.addEventListener('mousemove', documentMouseMoveHandler, false);\n                    window.addEventListener('mousedown', documentMouseDownHandler, false);\n                    window.addEventListener('mouseup', documentMouseUpHandler, false);\n                    document.addEventListener('touchstart', documentTouchStartHandler, false);\n                    document.addEventListener('touchmove', documentTouchMoveHandler, false);\n                    window.addEventListener('resize', windowResizeHandler, false);\n\n                    createParticles();\n                    windowResizeHandler();\n                    loop()\n                }\n            }\n\n            //创建线条\n            function createParticles() {\n                particles = [];\n\n                for (var i = 0; i < QUANTITY; i++) {\n                    var particle = {\n                        size: 1,\n                        position: {x: mouseX, y: mouseY},\n                        offset: {x: 0, y: 0},\n                        shift: {x: mouseX, y: mouseY},\n                        speed: 0.01 + Math.random() * 0.04,\n                        targetSize: 1,\n                        fillColor: '#' + (Math.random() * 0x904040 + 0xaaaaaa | 0).toString(16),\n                        orbit: RADIUS * .5 + (RADIUS * .5 * Math.random())\n                    };\n\n                    particles.push(particle);\n                }\n            }\n\n            //鼠标移动事件\n            function documentMouseMoveHandler(event) {\n                mouseX = event.clientX - (window.innerWidth - SCREEN_WIDTH) * .5;\n                mouseY = event.clientY - (window.innerHeight - SCREEN_HEIGHT) * .5;\n            }\n\n            //鼠标按下\n            function documentMouseDownHandler(event) {\n                mouseIsDown = true;\n            }\n\n            //鼠标抬起\n            function documentMouseUpHandler(event) {\n                mouseIsDown = false;\n            }\n\n            //移动端 touch\n            function documentTouchStartHandler(event) {\n                if (event.touches.length == 1) {\n                    event.preventDefault();\n\n                    mouseX = event.touches[0].pageX - (window.innerWidth - SCREEN_WIDTH) * .5;\n                    ;\n                    mouseY = event.touches[0].pageY - (window.innerHeight - SCREEN_HEIGHT) * .5;\n                }\n            }\n\n            //移动端滑动\n            function documentTouchMoveHandler(event) {\n                if (event.touches.length == 1) {\n                    event.preventDefault();\n\n                    mouseX = event.touches[0].pageX - (window.innerWidth - SCREEN_WIDTH) * .5;\n                    ;\n                    mouseY = event.touches[0].pageY - (window.innerHeight - SCREEN_HEIGHT) * .5;\n                }\n            }\n\n            //窗口大小改变\n            function windowResizeHandler() {\n                SCREEN_WIDTH = window.innerWidth;\n                SCREEN_HEIGHT = window.innerHeight;\n\n                canvas.width = SCREEN_WIDTH;\n                canvas.height = SCREEN_HEIGHT;\n            }\n\n            function loop() {\n                if (mouseIsDown) {\n                    RADIUS_SCALE += (RADIUS_SCALE_MAX - RADIUS_SCALE) * (0.02);\n                } else {\n                    RADIUS_SCALE -= (RADIUS_SCALE - RADIUS_SCALE_MIN) * (0.02);\n                }\n\n                RADIUS_SCALE = Math.min(RADIUS_SCALE, RADIUS_SCALE_MAX);\n\n                //context.fillStyle = 'rgba(0,0,0,0.05)';\n                //context.fillRect(0, 0, context.canvas.width, context.canvas.height);\n                context.clearRect(0, 0, context.canvas.width, context.canvas.height)\n                for (var i = 0, len = particles.length; i < len; i++) {\n                    var particle = particles[i];\n\n                    var lp = {x: particle.position.x, y: particle.position.y};\n\n                    // Rotation\n                    particle.offset.x += particle.speed;\n                    particle.offset.y += particle.speed;\n\n                    // Follow mouse with some lag\n                    particle.shift.x += (mouseX - particle.shift.x) * (particle.speed);\n                    particle.shift.y += (mouseY - particle.shift.y) * (particle.speed);\n\n                    // Apply position\n                    particle.position.x = particle.shift.x + Math.cos(i + particle.offset.x) * (particle.orbit * RADIUS_SCALE);\n                    particle.position.y = particle.shift.y + Math.sin(i + particle.offset.y) * (particle.orbit * RADIUS_SCALE);\n\n                    // Limit to screen bounds\n                    particle.position.x = Math.max(Math.min(particle.position.x, SCREEN_WIDTH), 0);\n                    particle.position.y = Math.max(Math.min(particle.position.y, SCREEN_HEIGHT), 0);\n\n                    particle.size += (particle.targetSize - particle.size) * 0.01;\n\n                    if (Math.round(particle.size) == Math.round(particle.targetSize)) {\n                        particle.targetSize = 1 + Math.random() * 2;\n                    }\n\n                    context.beginPath();\n                    context.fillStyle = particle.fillColor;\n                    context.strokeStyle = particle.fillColor;\n                    context.lineWidth = particle.size;\n                    context.moveTo(lp.x, lp.y);\n                    context.lineTo(particle.position.x, particle.position.y);\n                    context.stroke();\n                    context.arc(particle.position.x, particle.position.y, particle.size / 2, 0, Math.PI * 2, true);\n                    context.fill();\n                }\n                window.requestAnimationFrame(loop);\n            }\n\n            init()\n        }\n\n        mouseType3() {\n\n            //创建 canvas 标签\n            var div = $(\"<div id='shuicheDiv' style='position: fixed;width: 100%;height: \"+ $(window).height() +\"px; left: 0px; top: 0px; z-index: 2147483647;pointer-events:none;'></div>\");\n            $(\"body\").append(div);\n\n            var Follow = function () {\n                var $ = function (i) {\n                    return document.getElementById(i)\n                };\n                var addEvent = function (o, e, f) {\n                    window.addEventListener ? window.addEventListener(e, f, false) : window.attachEvent('on' + e, function () {\n                        f.call(window)\n                    })\n                }\n\n                var OBJ = []\n                var sp\n                var rs\n                var N = 0\n                var m;\n\n                var init = function (id, config) {\n                    this.config = config || {};\n                    this.obj = $(id);\n                    sp = this.config.speed || 4;\n                    rs = this.config.animR || 1;\n                    m = {x: $(id).offsetWidth * .5, y: $(id).offsetHeight * .5};\n                    this.setXY();\n                    this.start();\n                }\n\n                init.prototype = {\n                    setXY: function () {\n                        var _this = this;\n\n                        addEvent(this.obj, 'mousemove', function (e) {\n                            e = e || window.event;\n                            m.x = e.clientX;\n                            m.y = e.clientY;\n                        })\n                    },\n\n                    start: function () {\n                        var k = 180 / Math.PI, OO, o, _this = this, fn = this.config.fn;\n                        OBJ[N++] = OO = new CObj(null, 0, 0);\n                        for (var i = 0; i < 360; i += 20) {\n                            var O = OO;\n                            for (var j = 10; j < 35; j += 1) {\n                                var x = fn(i, j).x,\n                                    y = fn(i, j).y;\n                                OBJ[N++] = o = new CObj(O, x, y);\n                                O = o;\n                            }\n                        }\n                        setInterval(function () {\n                            for (var i = 0; i < N; i++) OBJ[i].run();\n                        }, 16);\n\n                    }\n\n                }\n\n                var CObj = function (p, cx, cy) {\n\n                    var obj = document.createElement(\"span\");\n\n                    this.css = obj.style;\n                    this.css.backgroundColor = \"#2D8CF0\"\n                    this.css.width=\"2px\";\n                    this.css.height=\"2px\";\n\n                    this.css.position = \"absolute\";\n                    this.css.left = \"-1000px\";\n                    this.css.zIndex = 1000 - N;\n\n                    document.getElementById(\"shuicheDiv\").appendChild(obj);\n\n                    this.ddx = 0;\n\n                    this.ddy = 0;\n\n                    this.PX = 0;\n\n                    this.PY = 0;\n\n                    this.x = 0;\n\n                    this.y = 0;\n\n                    this.x0 = 0;\n\n                    this.y0 = 0;\n\n                    this.cx = cx;\n\n                    this.cy = cy;\n\n                    this.parent = p;\n\n                }\n\n                CObj.prototype.run = function () {\n                    if (!this.parent) {\n                        this.x0 = m.x;\n                        this.y0 = m.y;\n                    } else {\n                        this.x0 = this.parent.x;\n                        this.y0 = this.parent.y;\n                    }\n                    this.x = this.PX += (this.ddx += ((this.x0 - this.PX - this.ddx) + this.cx) / rs) / sp;\n                    this.y = this.PY += (this.ddy += ((this.y0 - this.PY - this.ddy) + this.cy) / rs) / sp;\n                    this.css.left = Math.round(this.x) + 'px';\n                    this.css.top = Math.round(this.y) + 'px';\n                }\n                return init;\n\n            }();\n\n            new Follow('shuicheDiv', {\n                speed: 4, animR: 2, fn: function (i, j) {\n                    return {\n                        x: j / 4 * Math.cos(i),\n                        y: j / 4 * Math.sin(i)\n                    }\n                }\n            })\n        }\n    }\n})(jQuery);\n"
  }
]