mm_os 1.3.4 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/README.en.md +36 -0
  2. package/README.md +25 -166
  3. package/conf.json +3 -0
  4. package/core/base/index.js +29 -0
  5. package/core/base/mqtt/index.js +268 -0
  6. package/core/base/mqtt/lib.js +40 -0
  7. package/core/base/web/index.js +110 -0
  8. package/core/com/api/com.json +4 -0
  9. package/{bin → core}/com/api/config.tpl.json +9 -7
  10. package/{bin → core}/com/api/drive.js +239 -64
  11. package/{bin → core}/com/api/index.js +8 -9
  12. package/{bin → core}/com/api/oauth.js +23 -14
  13. package/core/com/api/script.js +32 -0
  14. package/core/com/db/com.json +4 -0
  15. package/{bin → core}/com/db/drive.js +99 -65
  16. package/{bin → core}/com/db/index.js +2 -2
  17. package/core/com/event/com.json +4 -0
  18. package/{bin → core}/com/event/config.tpl.json +2 -2
  19. package/core/com/event/drive.js +125 -0
  20. package/{bin → core}/com/event/index.js +5 -10
  21. package/core/com/event/script.js +26 -0
  22. package/core/com/eventer/com.js +450 -0
  23. package/core/com/eventer/com.json +4 -0
  24. package/core/com/middleware/com.js +128 -0
  25. package/core/com/middleware/com.json +4 -0
  26. package/core/com/middleware/config.tpl.json +8 -0
  27. package/core/com/middleware/script.js +9 -0
  28. package/core/com/mqtt/com.json +4 -0
  29. package/core/com/mqtt/config.tpl.json +12 -0
  30. package/core/com/mqtt/drive.js +139 -0
  31. package/core/com/mqtt/index.js +138 -0
  32. package/core/com/mqtt/script.js +33 -0
  33. package/core/com/msg/com.js +296 -0
  34. package/core/com/msg/com.json +4 -0
  35. package/{bin → core}/com/nav/drive.js +42 -17
  36. package/{bin → core}/com/nav/index.js +4 -4
  37. package/core/com/nav/tpl/admin_pc/page_channel.vue +299 -0
  38. package/core/com/nav/tpl/admin_pc/page_config.vue +279 -0
  39. package/core/com/nav/tpl/admin_pc/page_config_form.vue +194 -0
  40. package/core/com/nav/tpl/admin_pc/page_default.vue +287 -0
  41. package/core/com/nav/tpl/admin_pc/page_form.vue +180 -0
  42. package/core/com/nav/tpl/admin_pc/page_lang.vue +265 -0
  43. package/core/com/nav/tpl/admin_pc/page_nav.vue +313 -0
  44. package/core/com/nav/tpl/admin_pc/page_table.vue +285 -0
  45. package/core/com/nav/tpl/admin_pc/page_type.vue +313 -0
  46. package/core/com/nav/tpl/dev_pc/page_channel.vue +253 -0
  47. package/core/com/nav/tpl/dev_pc/page_config.vue +253 -0
  48. package/core/com/nav/tpl/dev_pc/page_default.vue +247 -0
  49. package/core/com/nav/tpl/dev_pc/page_form.vue +162 -0
  50. package/core/com/nav/tpl/dev_pc/page_nav.vue +253 -0
  51. package/core/com/nav/tpl/dev_pc/page_table.vue +247 -0
  52. package/core/com/nav/tpl/dev_pc/page_type.vue +253 -0
  53. package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_channel.vue +231 -231
  54. package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_default.vue +231 -231
  55. package/{bin → core}/com/nav/tpl/home_pc/page_form.vue +9 -9
  56. package/{bin → core}/com/nav/tpl/home_pc/page_list.vue +231 -231
  57. package/{bin → core}/com/nav/tpl/home_pc/page_nav.vue +221 -221
  58. package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_type.vue +231 -231
  59. package/{bin → core}/com/nav/tpl/home_pc/page_view.vue +8 -8
  60. package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_channel.vue +231 -231
  61. package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_default.vue +231 -231
  62. package/{bin → core}/com/nav/tpl/home_phone/page_form.vue +9 -9
  63. package/{bin → core}/com/nav/tpl/home_phone/page_list.vue +231 -231
  64. package/{bin/com/nav/tpl/admin_pc → core/com/nav/tpl/home_phone}/page_nav.vue +236 -220
  65. package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_type.vue +231 -231
  66. package/{bin → core}/com/nav/tpl/home_phone/page_view.vue +8 -8
  67. package/core/com/nav/viewmodel.js +296 -0
  68. package/{bin → core}/com/param/config.tpl.json +24 -0
  69. package/{bin → core}/com/param/drive.js +47 -15
  70. package/core/com/plugin/com.json +4 -0
  71. package/core/com/plugin/config.tpl.json +20 -0
  72. package/{bin → core}/com/plugin/drive.js +5 -8
  73. package/{bin → core}/com/plugin/index.js +11 -56
  74. package/core/com/socket/README.md +47 -0
  75. package/core/com/socket/com.json +4 -0
  76. package/core/com/socket/config.tpl.json +14 -0
  77. package/{bin → core}/com/socket/drive.js +74 -51
  78. package/{bin → core}/com/socket/index.js +4 -2
  79. package/{bin → core}/com/socket/script.js +8 -6
  80. package/core/com/sql/config.tpl.json +70 -0
  81. package/{bin → core}/com/sql/drive.js +281 -58
  82. package/core/com/static/com.json +4 -0
  83. package/core/com/static/config.tpl.json +20 -0
  84. package/{bin → core}/com/static/drive.js +6 -4
  85. package/{bin → core}/com/static/index.js +5 -1
  86. package/core/com/task/com.json +4 -0
  87. package/core/com/task/config.tpl.json +24 -0
  88. package/core/com/task/drive.js +374 -0
  89. package/{bin → core}/com/task/index.js +14 -20
  90. package/core/com/task/script.js +37 -0
  91. package/core/com/timer/com.js +217 -0
  92. package/core/com/timer/com.json +4 -0
  93. package/core/com/tpl/com.js +19 -0
  94. package/core/com/tpl/com.json +4 -0
  95. package/index.js +161 -740
  96. package/lib/actions.js +50 -0
  97. package/lib/app.js +73 -0
  98. package/lib/base.js +355 -0
  99. package/lib/com.js +31 -0
  100. package/lib/game.js +31 -0
  101. package/lib/ref.js +121 -0
  102. package/middleware/cors/index.js +57 -0
  103. package/middleware/cors/middleware.json +7 -0
  104. package/middleware/mqtt_base/index.js +10 -0
  105. package/middleware/mqtt_base/middleware.json +8 -0
  106. package/{waf.js → middleware/waf/index.js} +12 -2
  107. package/middleware/waf/middleware.json +9 -0
  108. package/middleware/web_base/index.js +67 -0
  109. package/middleware/web_base/middleware.json +9 -0
  110. package/middleware/web_event/index.js +411 -0
  111. package/middleware/web_event/middleware.json +10 -0
  112. package/middleware/web_proxy/index.js +24 -0
  113. package/middleware/web_proxy/middleware.json +9 -0
  114. package/middleware/web_router/index.js +33 -0
  115. package/middleware/web_router/middleware.json +10 -0
  116. package/middleware/web_socket/index.js +21 -0
  117. package/middleware/web_socket/middleware.json +9 -0
  118. package/middleware/web_static/index.js +26 -0
  119. package/middleware/web_static/middleware.json +9 -0
  120. package/nodemon.json +12 -2
  121. package/package.json +56 -66
  122. package/.gitattributes +0 -5
  123. package/bin/com/README.md +0 -2
  124. package/bin/com/api/script.js +0 -14
  125. package/bin/com/cmd/README.md +0 -3
  126. package/bin/com/cmd/config.tpl.json +0 -41
  127. package/bin/com/cmd/drive.js +0 -512
  128. package/bin/com/cmd/index.js +0 -213
  129. package/bin/com/cmd/old/5w2h.js +0 -54
  130. package/bin/com/cmd/old/drive.js +0 -423
  131. package/bin/com/cmd/script.js +0 -11
  132. package/bin/com/event/drive.js +0 -69
  133. package/bin/com/event/script.js +0 -12
  134. package/bin/com/nav/tpl/admin_pc/page_channel.vue +0 -234
  135. package/bin/com/nav/tpl/admin_pc/page_default.vue +0 -236
  136. package/bin/com/nav/tpl/admin_pc/page_form.vue +0 -152
  137. package/bin/com/nav/tpl/admin_pc/page_table.vue +0 -236
  138. package/bin/com/nav/tpl/admin_pc/page_type.vue +0 -234
  139. package/bin/com/nav/tpl/home_phone/page_nav.vue +0 -221
  140. package/bin/com/nav/viewmodel.js +0 -161
  141. package/bin/com/plugin/config.tpl.json +0 -11
  142. package/bin/com/socket/config.tpl.json +0 -8
  143. package/bin/com/sql/config.tpl.json +0 -34
  144. package/bin/com/static/config.tpl.json +0 -11
  145. package/bin/com/task/config.tpl.json +0 -13
  146. package/bin/com/task/drive.js +0 -288
  147. package/bin/com/task/script.js +0 -38
  148. package/bin/com.js +0 -74
  149. package/bin/mm.conf +0 -48
  150. package/bin/static/404.html +0 -52
  151. package/bin/static/README.md +0 -1
  152. package/bin/static/css/font-awesome.min.css +0 -7
  153. package/bin/static/css/mm_base.css +0 -220
  154. package/bin/static/css/mm_common.css +0 -518
  155. package/bin/static/css/mm_component.css +0 -307
  156. package/bin/static/css/mm_expand.css +0 -634
  157. package/bin/static/css/mm_theme.css +0 -291
  158. package/bin/static/css/new_file.css +0 -79
  159. package/bin/static/css/swiper.min.css +0 -12
  160. package/bin/static/favicon.ico +0 -0
  161. package/bin/static/font/FontAwesome.otf +0 -0
  162. package/bin/static/font/HelveticaNeue.eot +0 -0
  163. package/bin/static/font/HelveticaNeue.otf +0 -0
  164. package/bin/static/font/HelveticaNeue.svg +0 -1273
  165. package/bin/static/font/HelveticaNeue.woff +0 -0
  166. package/bin/static/font/HelveticaNeue.woff2 +0 -0
  167. package/bin/static/font/fontawesome-webfont.eot +0 -0
  168. package/bin/static/font/fontawesome-webfont.svg +0 -2671
  169. package/bin/static/font/fontawesome-webfont.ttf +0 -0
  170. package/bin/static/font/fontawesome-webfont.woff +0 -0
  171. package/bin/static/font/fontawesome-webfont.woff2 +0 -0
  172. package/bin/static/h5.html +0 -325
  173. package/bin/static/highlight/highlight.pack.js +0 -2
  174. package/bin/static/highlight/styles/a11y-dark.css +0 -99
  175. package/bin/static/highlight/styles/a11y-light.css +0 -99
  176. package/bin/static/highlight/styles/agate.css +0 -108
  177. package/bin/static/highlight/styles/an-old-hope.css +0 -89
  178. package/bin/static/highlight/styles/androidstudio.css +0 -66
  179. package/bin/static/highlight/styles/arduino-light.css +0 -88
  180. package/bin/static/highlight/styles/arta.css +0 -73
  181. package/bin/static/highlight/styles/ascetic.css +0 -45
  182. package/bin/static/highlight/styles/atelier-cave-dark.css +0 -83
  183. package/bin/static/highlight/styles/atelier-cave-light.css +0 -85
  184. package/bin/static/highlight/styles/atelier-dune-dark.css +0 -69
  185. package/bin/static/highlight/styles/atelier-dune-light.css +0 -69
  186. package/bin/static/highlight/styles/atelier-estuary-dark.css +0 -84
  187. package/bin/static/highlight/styles/atelier-estuary-light.css +0 -84
  188. package/bin/static/highlight/styles/atelier-forest-dark.css +0 -69
  189. package/bin/static/highlight/styles/atelier-forest-light.css +0 -69
  190. package/bin/static/highlight/styles/atelier-heath-dark.css +0 -69
  191. package/bin/static/highlight/styles/atelier-heath-light.css +0 -69
  192. package/bin/static/highlight/styles/atelier-lakeside-dark.css +0 -69
  193. package/bin/static/highlight/styles/atelier-lakeside-light.css +0 -69
  194. package/bin/static/highlight/styles/atelier-plateau-dark.css +0 -84
  195. package/bin/static/highlight/styles/atelier-plateau-light.css +0 -84
  196. package/bin/static/highlight/styles/atelier-savanna-dark.css +0 -84
  197. package/bin/static/highlight/styles/atelier-savanna-light.css +0 -84
  198. package/bin/static/highlight/styles/atelier-seaside-dark.css +0 -69
  199. package/bin/static/highlight/styles/atelier-seaside-light.css +0 -69
  200. package/bin/static/highlight/styles/atelier-sulphurpool-dark.css +0 -69
  201. package/bin/static/highlight/styles/atelier-sulphurpool-light.css +0 -69
  202. package/bin/static/highlight/styles/atom-one-dark-reasonable.css +0 -77
  203. package/bin/static/highlight/styles/atom-one-dark.css +0 -96
  204. package/bin/static/highlight/styles/atom-one-light.css +0 -96
  205. package/bin/static/highlight/styles/brown-paper.css +0 -64
  206. package/bin/static/highlight/styles/brown-papersq.png +0 -0
  207. package/bin/static/highlight/styles/codepen-embed.css +0 -60
  208. package/bin/static/highlight/styles/color-brewer.css +0 -71
  209. package/bin/static/highlight/styles/darcula.css +0 -77
  210. package/bin/static/highlight/styles/dark.css +0 -63
  211. package/bin/static/highlight/styles/darkula.css +0 -6
  212. package/bin/static/highlight/styles/default.css +0 -99
  213. package/bin/static/highlight/styles/docco.css +0 -97
  214. package/bin/static/highlight/styles/dracula.css +0 -76
  215. package/bin/static/highlight/styles/far.css +0 -71
  216. package/bin/static/highlight/styles/foundation.css +0 -88
  217. package/bin/static/highlight/styles/github-gist.css +0 -79
  218. package/bin/static/highlight/styles/github.css +0 -99
  219. package/bin/static/highlight/styles/gml.css +0 -78
  220. package/bin/static/highlight/styles/googlecode.css +0 -89
  221. package/bin/static/highlight/styles/grayscale.css +0 -101
  222. package/bin/static/highlight/styles/gruvbox-dark.css +0 -108
  223. package/bin/static/highlight/styles/gruvbox-light.css +0 -108
  224. package/bin/static/highlight/styles/hopscotch.css +0 -83
  225. package/bin/static/highlight/styles/hybrid.css +0 -102
  226. package/bin/static/highlight/styles/idea.css +0 -97
  227. package/bin/static/highlight/styles/ir-black.css +0 -73
  228. package/bin/static/highlight/styles/isbl-editor-dark.css +0 -112
  229. package/bin/static/highlight/styles/isbl-editor-light.css +0 -112
  230. package/bin/static/highlight/styles/kimbie.dark.css +0 -74
  231. package/bin/static/highlight/styles/kimbie.light.css +0 -74
  232. package/bin/static/highlight/styles/lightfair.css +0 -87
  233. package/bin/static/highlight/styles/magula.css +0 -70
  234. package/bin/static/highlight/styles/mono-blue.css +0 -59
  235. package/bin/static/highlight/styles/monokai-sublime.css +0 -83
  236. package/bin/static/highlight/styles/monokai.css +0 -70
  237. package/bin/static/highlight/styles/nord.css +0 -309
  238. package/bin/static/highlight/styles/obsidian.css +0 -88
  239. package/bin/static/highlight/styles/ocean.css +0 -74
  240. package/bin/static/highlight/styles/paraiso-dark.css +0 -72
  241. package/bin/static/highlight/styles/paraiso-light.css +0 -72
  242. package/bin/static/highlight/styles/pojoaque.css +0 -83
  243. package/bin/static/highlight/styles/pojoaque.jpg +0 -0
  244. package/bin/static/highlight/styles/purebasic.css +0 -96
  245. package/bin/static/highlight/styles/qtcreator_dark.css +0 -83
  246. package/bin/static/highlight/styles/qtcreator_light.css +0 -83
  247. package/bin/static/highlight/styles/railscasts.css +0 -106
  248. package/bin/static/highlight/styles/rainbow.css +0 -85
  249. package/bin/static/highlight/styles/routeros.css +0 -108
  250. package/bin/static/highlight/styles/school-book.css +0 -69
  251. package/bin/static/highlight/styles/school-book.png +0 -0
  252. package/bin/static/highlight/styles/shades-of-purple.css +0 -97
  253. package/bin/static/highlight/styles/solarized-dark.css +0 -84
  254. package/bin/static/highlight/styles/solarized-light.css +0 -84
  255. package/bin/static/highlight/styles/sunburst.css +0 -102
  256. package/bin/static/highlight/styles/tomorrow-night-blue.css +0 -75
  257. package/bin/static/highlight/styles/tomorrow-night-bright.css +0 -74
  258. package/bin/static/highlight/styles/tomorrow-night-eighties.css +0 -74
  259. package/bin/static/highlight/styles/tomorrow-night.css +0 -75
  260. package/bin/static/highlight/styles/tomorrow.css +0 -72
  261. package/bin/static/highlight/styles/vs.css +0 -68
  262. package/bin/static/highlight/styles/vs2015.css +0 -115
  263. package/bin/static/highlight/styles/xcode.css +0 -104
  264. package/bin/static/highlight/styles/xt256.css +0 -92
  265. package/bin/static/highlight/styles/zenburn.css +0 -80
  266. package/bin/static/highlight/vue-highlight.js +0 -29
  267. package/bin/static/ifame.html +0 -24
  268. package/bin/static/img/add.png +0 -0
  269. package/bin/static/img/avatar.png +0 -0
  270. package/bin/static/img/banner_2.png +0 -0
  271. package/bin/static/img/default.png +0 -0
  272. package/bin/static/img/loading.svg +0 -1
  273. package/bin/static/img/logo.png +0 -0
  274. package/bin/static/img/logo1.png +0 -0
  275. package/bin/static/img/logo_gray.png +0 -0
  276. package/bin/static/img/logo_round.png +0 -0
  277. package/bin/static/img/mm.ico +0 -0
  278. package/bin/static/img/mm.jpg +0 -0
  279. package/bin/static/img/select.png +0 -0
  280. package/bin/static/img/web.png +0 -0
  281. package/bin/static/index.html +0 -12
  282. package/bin/static/js/clipboard.min.js +0 -257
  283. package/bin/static/js/css.min.js +0 -1
  284. package/bin/static/js/echarts.js +0 -22
  285. package/bin/static/js/html5.min.js +0 -1
  286. package/bin/static/js/jquery.lazyload.min.js +0 -2
  287. package/bin/static/js/jquery.min.js +0 -4189
  288. package/bin/static/js/jquery.scrollstop.min.js +0 -2
  289. package/bin/static/js/mm-requirejs-vue.js +0 -283
  290. package/bin/static/js/mm_check.js +0 -490
  291. package/bin/static/js/mm_flexble.js +0 -112
  292. package/bin/static/js/mm_picker.js +0 -1417
  293. package/bin/static/js/mm_pinyinlite.js +0 -873
  294. package/bin/static/js/mm_sdk.js +0 -2841
  295. package/bin/static/js/mm_ui_expand.js +0 -468
  296. package/bin/static/js/mm_vue.js +0 -376
  297. package/bin/static/js/mm_vue_ui.js +0 -2375
  298. package/bin/static/js/mm_websocket.js +0 -145
  299. package/bin/static/js/require.js +0 -5
  300. package/bin/static/js/sortable.min.js +0 -3
  301. package/bin/static/js/swiper.min.js +0 -13
  302. package/bin/static/js/text.min.js +0 -1
  303. package/bin/static/js/vue-router.min.js +0 -6
  304. package/bin/static/js/vue.js +0 -12338
  305. package/bin/static/js/vuedraggable.min.js +0 -2
  306. package/bin/static/js/vuex.min.js +0 -6
  307. package/bin/static/src/components/bar/mm_action.vue +0 -19
  308. package/bin/static/src/components/bar/mm_buy.vue +0 -19
  309. package/bin/static/src/components/bar/mm_chat.vue +0 -18
  310. package/bin/static/src/components/bar/mm_count.vue +0 -18
  311. package/bin/static/src/components/bar/mm_filter.vue +0 -18
  312. package/bin/static/src/components/bar/mm_search.vue +0 -18
  313. package/bin/static/src/components/bar/mm_sort.vue +0 -18
  314. package/bin/static/src/components/bar/mm_tag.vue +0 -18
  315. package/bin/static/src/components/bar/mm_title.vue +0 -19
  316. package/bin/static/src/components/content/mm_pre.vue +0 -70
  317. package/bin/static/src/components/expand/mm_drag.vue +0 -39
  318. package/bin/static/src/components/item/mm_article.vue +0 -115
  319. package/bin/static/src/components/item/mm_base.vue +0 -26
  320. package/bin/static/src/components/item/mm_contact.vue +0 -25
  321. package/bin/static/src/components/item/mm_goods.vue +0 -23
  322. package/bin/static/src/components/item/mm_img.vue +0 -21
  323. package/bin/static/src/components/item/mm_media.vue +0 -18
  324. package/bin/static/src/components/item/mm_message.vue +0 -18
  325. package/bin/static/src/components/item/mm_music.vue +0 -95
  326. package/bin/static/src/components/item/mm_news.vue +0 -22
  327. package/bin/static/src/components/item/mm_number.vue +0 -26
  328. package/bin/static/src/components/item/mm_question.vue +0 -35
  329. package/bin/static/src/components/item/mm_user.vue +0 -22
  330. package/bin/static/src/components/item/mm_video.vue +0 -95
  331. package/bin/static/src/components/slide/mm_slide_card.vue +0 -64
  332. package/bin/static/src/components/slide/mm_slide_img.vue +0 -47
  333. package/bin/static/src/components/slide/mm_slide_page.vue +0 -8
  334. package/bin/static/src/components/slide/mm_slide_text.vue +0 -54
  335. package/bin/static/src/main.js +0 -84
  336. package/bin/static/src/mixins/form.js +0 -223
  337. package/bin/static/src/mixins/item.js +0 -242
  338. package/bin/static/src/mixins/list.js +0 -244
  339. package/bin/static/src/mixins/page.js +0 -1011
  340. package/bin/static/src/mm_component.js +0 -74
  341. package/bin/static/src/router.js +0 -72
  342. package/bin/static/src/store/user.js +0 -75
  343. package/bin/static/src/store/web.js +0 -50
  344. package/bin/static/user/1/number_info.xlsx +0 -0
  345. package/bin/static/w3c.html +0 -94
  346. package/init.js +0 -55
  347. package/update.md +0 -1
  348. /package/{bin → core}/com/api/README.md +0 -0
  349. /package/{bin → core}/com/api/rpc.js +0 -0
  350. /package/{bin → core}/com/db/README.md +0 -0
  351. /package/{bin → core}/com/event/README.md +0 -0
  352. /package/{bin/com/socket → core/com/mqtt}/README.md +0 -0
  353. /package/{bin → core}/com/nav/README.md +0 -0
  354. /package/{bin → core}/com/nav/config.tpl.json +0 -0
  355. /package/{bin → core}/com/param/README.md +0 -0
  356. /package/{bin → core}/com/param/index.js +0 -0
  357. /package/{bin → core}/com/param/script.js +0 -0
  358. /package/{bin → core}/com/param/test.js +0 -0
  359. /package/{bin → core}/com/plugin/README.md +0 -0
  360. /package/{bin → core}/com/plugin/script.js +0 -0
  361. /package/{bin → core}/com/sql/README.md +0 -0
  362. /package/{bin → core}/com/sql/index.js +0 -0
  363. /package/{bin → core}/com/sql/script.js +0 -0
  364. /package/{bin → core}/com/static/README.md +0 -0
  365. /package/{bin → core}/com/static/script.js +0 -0
  366. /package/{bin → core}/com/task/README.md +0 -0
  367. /package/{bin/rps.bat → rps.bat} +0 -0
  368. /package/{bin/tps.bat → tps.bat} +0 -0
@@ -1,288 +0,0 @@
1
- const Item = require('mm_machine').Item;
2
-
3
- function span(t1, t2) {
4
- return t1 - t2
5
- }
6
-
7
- /**
8
- * Task任务驱动类
9
- * @extends {Item}
10
- * @class
11
- */
12
- class Drive extends Item {
13
- /**
14
- * 构造函数
15
- * @param {String} dir 当前目录
16
- * @constructor
17
- */
18
- constructor(dir) {
19
- super(dir, __dirname);
20
- this.default_file = "./task.json";
21
-
22
- /* 通用项 */
23
- /**
24
- * 配置参数
25
- */
26
- this.config = {
27
- // 标题, 介绍事件作用
28
- "title": "示例事件",
29
- // 描述, 用于描述该事件有什么用的
30
- "description": "描述事件使用方法",
31
- // 名称, 由中英文和下“_”组成, 用于卸载事件
32
- "name": "demo",
33
- // 文件路径, 当调用函数不存在时,会先从文件中加载
34
- "func_file": "./index.js",
35
- // 回调函数名 用于决定调用脚本的哪个函数
36
- "func_name": "",
37
- // 执行次数
38
- "num": 10,
39
- // 时间间隔(毫秒ms)
40
- "interval": 1000,
41
- // 等待时长(毫秒ms)
42
- "wait": 0,
43
- // 执行时间
44
- "time": "",
45
- // 执行开始日期
46
- "date_start": "",
47
- // 执行结束日期
48
- "date_end": "",
49
- // 执行顺序
50
- "sort": 100,
51
- };
52
- // 当前状态
53
- this.state = "end";
54
-
55
- // 当前执行次数
56
- this.num = 0;
57
-
58
- // 任务管理器
59
- this.task_adminr = {};
60
- }
61
- }
62
-
63
- /**
64
- * 设置时期执行
65
- * @param {Object} _this 当前类
66
- * @param {Function} func 回调函数
67
- */
68
- Drive.prototype.setPeriod = function(_this, func) {
69
- var cg = _this.config;
70
- var fn;
71
- var time = cg.time;
72
- if (time) {
73
- if (time.indexOf(' ') !== -1) {
74
- if (time.indexOf('-') !== -1) {
75
- fn = function() {
76
- if (new Date().toStr('MM-dd hh:mm:ss') === time) {
77
- func();
78
- }
79
- };
80
- } else {
81
- fn = function() {
82
- if (new Date().toStr('dd hh:mm:ss') === time) {
83
- func();
84
- }
85
- };
86
- }
87
- }
88
- else {
89
- var arr = time.split(':');
90
- if (arr.length === 3) {
91
- fn = function() {
92
- if (new Date().toStr('hh:mm:ss') === time) {
93
- func();
94
- }
95
- };
96
- } else if (arr.length === 2) {
97
- fn = function() {
98
- if (new Date().toStr('hh:mm') === time) {
99
- func();
100
- }
101
- };
102
- } else {
103
- fn = function() {
104
- if (new Date().toStr('mm') === time) {
105
- func();
106
- }
107
- };
108
- }
109
- }
110
-
111
- } else {
112
- fn = func;
113
- }
114
-
115
- if (cg.date_start) {
116
- var start = toTime(cg.date_start);
117
- if (cg.date_end) {
118
- var end = toTime(cg.date_end);
119
- return async function() {
120
- var now = new Date();
121
- if (span(now, end) >= 0) {
122
- if (span(now, start) <= 0) {
123
- fn();
124
- }
125
- } else {
126
- _this.clear();
127
- _this.notify(cg.name, 'time end');
128
- }
129
- };
130
- } else {
131
- return async function() {
132
- var now = new Date();
133
- if (span(now, start) <= 0) {
134
- fn();
135
- }
136
- };
137
- }
138
- } else if (cg.date_end) {
139
- var end = toTime(cg.date_end);
140
- return async function() {
141
- var now = new Date();
142
- if (span(now, end) >= 0) {
143
- fn();
144
- } else {
145
- _this.clear();
146
- _this.notify(cg.name, 'end time');
147
- }
148
- };
149
- } else {
150
- return async function() { fn() };
151
- }
152
- };
153
-
154
- /**
155
- * 设置按次数执行
156
- * @param {Object} _this 当前类
157
- */
158
- Drive.prototype.setNum = function(_this) {
159
- var cg = _this.config;
160
- return function() {
161
- if (cg.num < 1) {
162
- _this.main();
163
- } else if (_this.num < cg.num) {
164
- _this.num++;
165
- _this.main();
166
- } else {
167
- _this.clear();
168
- _this.notify(cg.name, 'completed');
169
- }
170
- };
171
- };
172
-
173
- /**
174
- * 删除任务
175
- * @param {String} name
176
- */
177
- Drive.prototype.del = async function(name) {
178
- this.task_adminr.del(name);
179
- };
180
-
181
- /**
182
- * 执行结果通知
183
- * @param {String} name 任务名称
184
- * @param {String} message 提示内容
185
- */
186
- Drive.prototype.notify = async function(name, message) {
187
- switch (message) {
188
- case "start":
189
- // $.log.debug(name + '任务已开启');
190
- break;
191
- case "stop":
192
- // $.log.debug(name + '已暂停');
193
- break;
194
- case "end":
195
- // 主动中断
196
- // $.log.debug(name + '已结束');
197
- break;
198
- case "end time":
199
- // $.log.debug(name + '时间到');
200
- // 删除任务
201
- this.del(name)
202
- break;
203
- case "completed":
204
- // $.log.debug(name + '已完成');
205
- // 删除任务
206
- this.del(name)
207
- break;
208
- default:
209
- break;
210
- }
211
- };
212
-
213
-
214
- /**
215
- * 清理函数, 用于删除当前任务
216
- */
217
- Drive.prototype.clear = async function() {
218
- this.destroy();
219
- };
220
-
221
- /**
222
- * 配置对象或配置路径
223
- */
224
- Drive.prototype.run = async function() {
225
-
226
- };
227
-
228
- /**
229
- * 创建执行函数
230
- */
231
- Drive.prototype.create = function(){
232
- var _this = this;
233
- setTimeout(function(){
234
- _this.run = _this.setPeriod(_this, _this.setNum(_this));
235
- }, this.config.wait * 1000);
236
- };
237
-
238
- /**
239
- * 销毁执行函数
240
- */
241
- Drive.prototype.destroy = function() {
242
- this.run = async function() {};
243
- };
244
-
245
- /**
246
- * 开关计时器 改变状态
247
- * @param {String} state = [start|stop|end] 状态, 如果什么都不传则切换开始或暂停
248
- */
249
- Drive.prototype.set_state = function(state) {
250
- if (state) {
251
- this.state = state;
252
- if (state === 'end') {
253
- this.num = 0;
254
- this.destroy();
255
- } else if (this.state === 'stop') {
256
- this.destroy();
257
- }
258
- else {
259
- this.create();
260
- }
261
- } else if (this.state === 'start') {
262
- this.state = 'stop';
263
- this.destroy();
264
- } else if (this.state === 'stop' || this.state === 'end') {
265
- this.state = 'start';
266
- this.create();
267
- }
268
-
269
- this.notify(this.config.name, this.state);
270
- };
271
-
272
- /**
273
- * 定时执行函数
274
- */
275
- Drive.prototype.main = async function() {
276
- $.log.debug('定时任务, 执行中...')
277
- };
278
-
279
-
280
-
281
- /**
282
- * 加载完成时, 设置为开始执行
283
- */
284
- Drive.prototype.load_after = function() {
285
- this.set_state();
286
- }
287
-
288
- module.exports = Drive;
@@ -1,38 +0,0 @@
1
- /**
2
- * 定时任务函数
3
- */
4
- exports.main = async function main() {
5
- $.log.debug('定时任务, 执行中...');
6
- };
7
-
8
- /**
9
- * 执行结果通知
10
- * @param {String} name 任务名称
11
- * @param {String} message 提示内容
12
- */
13
- exports.notify = async function(name, message) {
14
- switch (message) {
15
- case "start":
16
- // $.log.debug('定时任务, 执行中...');
17
- break;
18
- case "stop":
19
- // $.log.debug('已暂停');
20
- break;
21
- case "end":
22
- // 主动中断
23
- // $.log.debug('已结束');
24
- break;
25
- case "end time":
26
- // $.log.debug('时间到');
27
- // 删除任务
28
- this.del(name)
29
- break;
30
- case "completed":
31
- // $.log.debug('已完成');
32
- // 删除任务
33
- this.del(name)
34
- break;
35
- default:
36
- break;
37
- }
38
- };
package/bin/com.js DELETED
@@ -1,74 +0,0 @@
1
- /**
2
- * 公共类
3
- */
4
- class Com {
5
- /**
6
- * 构造函数
7
- * @param {Object} config
8
- * @param {Object} src 载入源
9
- */
10
- constructor(config, src) {
11
- /**
12
- * 配置参数
13
- */
14
- this.config = {
15
- /**
16
- * 检索的起始目录
17
- */
18
- path: __dirname,
19
- /**
20
- * 检索的目录名
21
- */
22
- dir: "com",
23
- /**
24
- * 检索的文件名
25
- */
26
- file: "index.js"
27
- };
28
-
29
- $.push(this.config, config, true);
30
-
31
- /**
32
- * 加载模块
33
- * @param {String} file 文件全名
34
- */
35
- this.load = function(file) {
36
- var com = require(file);
37
- $.push(src, com, true);
38
- };
39
-
40
- /**
41
- * 运行com加载
42
- * @param {String} path 路径
43
- */
44
- this.run = function(path) {
45
- if (!path) {
46
- path = this.config.path.fullname();
47
- }
48
- var dir_com = $.dir.getAll(path, this.config.dir);
49
-
50
- var dirs = [];
51
- dir_com.map(function(d){
52
- var list = $.dir.get(d);
53
- dirs.addList(list);
54
- });
55
- // console.log(dirs);
56
- // 遍历目录路径
57
- var _this = this;
58
- var file = this.config.file;
59
- dirs.map(function(d) {
60
- _this.load(d + file);
61
- });
62
- };
63
- }
64
- }
65
-
66
- /**
67
- * 卸载模块
68
- * @param {String} file 文件全名
69
- */
70
- Com.prototype.unload = function(file) {
71
- delete require.cache[require.resolve(file)];
72
- };
73
-
74
- module.exports = Com;
package/bin/mm.conf DELETED
@@ -1,48 +0,0 @@
1
-
2
- server {
3
- listen 80;
4
- server_name mm.elins.cn;
5
- root "C:\www\mm";
6
-
7
- location / {
8
- proxy_pass http://localhost:5000/;
9
- #Proxy Settings
10
- proxy_redirect off;
11
- proxy_set_header Host $host;
12
- proxy_set_header X-Real-IP $remote_addr;
13
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14
- proxy_set_header Connection close;
15
- proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
16
- proxy_max_temp_file_size 0;
17
- proxy_connect_timeout 90;
18
- proxy_send_timeout 90;
19
- proxy_read_timeout 90;
20
- proxy_buffer_size 4k;
21
- proxy_buffers 4 32k;
22
- proxy_busy_buffers_size 64k;
23
- proxy_temp_file_write_size 64k;
24
- }
25
- }
26
-
27
- server {
28
- listen 80;
29
- server_name frp.elins.cn;
30
- location / {
31
- proxy_pass http://127.0.0.1:8000/;
32
- #Proxy Settings
33
- proxy_redirect off;
34
- proxy_set_header Host $host;
35
- proxy_set_header X-Real-IP $remote_addr;
36
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
37
- proxy_set_header Connection close;
38
- proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
39
- proxy_max_temp_file_size 0;
40
- proxy_connect_timeout 90;
41
- proxy_send_timeout 90;
42
- proxy_read_timeout 90;
43
- proxy_buffer_size 4k;
44
- proxy_buffers 4 32k;
45
- proxy_busy_buffers_size 64k;
46
- proxy_temp_file_write_size 64k;
47
- }
48
- }
@@ -1,52 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-hans">
3
- <head>
4
- <!-- 必需的元标记 -->
5
- <meta charset="utf-8">
6
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
- <meta http-equiv="x-dns-prefetch-control" content="on">
9
- <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
10
- <meta name="format-detection" content="telephone=no">
11
- <meta name="apple-mobile-web-app-capable" content="yes">
12
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
13
- <meta name="description" content="描述">
14
- <meta name="keywords" content="关键词">
15
- <meta name="author" content="邱文武">
16
-
17
- <!-- 加载JS -->
18
- <!--if lt IE 9]><script src="/js/html5.min.js"></script><![endif]-->
19
- <title>超级美眉UI测试</title>
20
-
21
- <!-- 加载CSS -->
22
- <link rel="shortcut icon" href="/favicon.ico">
23
- <link rel="stylesheet" type="text/css" href="/css/swiper.min.css" />
24
- <link rel="stylesheet" type="text/css" href="/css/font-awesome.min.css" />
25
- <link rel="stylesheet" type="text/css" href="./css/mm_base.css" />
26
- <link rel="stylesheet" type="text/css" href="./css/mm_common.css" />
27
- <link rel="stylesheet" type="text/css" href="./css/mm_component.css" />
28
- <link rel="stylesheet" type="text/css" href="/css/mm_theme.css" />
29
- </head>
30
- <body>
31
- <div id="app">
32
- <div class="mm_page" id="error_404">
33
- <div class="box">
34
- <h1>404</h1>
35
- <div class="mm_grid">
36
- <div class="mm_col_50">
37
- <h2>超级美眉</h2>
38
- </div>
39
- <div class="mm_col_50">
40
- <div class="bg_no">
41
- <h6>一个好玩的服务端</h6>
42
- <p><a href="http://mm.elins.cn">http://mm.elins.cn</a></p>
43
- </div>
44
- </div>
45
- </div>
46
- </div>
47
- <div class="border"></div>
48
- <div class="border br2"></div>
49
- </div>
50
- </div>
51
- </body>
52
- </html>
@@ -1 +0,0 @@
1
- 静态摘要
@@ -1,7 +0,0 @@
1
- /*!
2
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4
- */@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=4.7.0');src:url('../font/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../font/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../font/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../font/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../font/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}i,.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size: inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass::before{content:"\f000"}.fa-music::before{content:"\f001"}.fa-search::before{content:"\f002"}.fa-envelope-o::before{content:"\f003"}.fa-heart::before{content:"\f004"}.fa-star::before{content:"\f005"}.fa-star-o::before{content:"\f006"}.fa-user::before{content:"\f007"}.fa-film::before{content:"\f008"}.fa-th-large::before{content:"\f009"}.fa-th::before{content:"\f00a"}.fa-th-list::before{content:"\f00b"}.fa-check::before{content:"\f00c"}.fa-remove::before,.fa-close::before,.fa-times::before{content:"\f00d"}.fa-search-plus::before{content:"\f00e"}.fa-search-minus::before{content:"\f010"}.fa-power-off::before{content:"\f011"}.fa-signal::before{content:"\f012"}.fa-gear::before,.fa-cog::before{content:"\f013"}.fa-trash-o::before{content:"\f014"}.fa-home::before{content:"\f015"}.fa-file-o::before{content:"\f016"}.fa-clock-o::before{content:"\f017"}.fa-road::before{content:"\f018"}.fa-download::before{content:"\f019"}.fa-arrow-circle-o-down::before{content:"\f01a"}.fa-arrow-circle-o-up::before{content:"\f01b"}.fa-inbox::before{content:"\f01c"}.fa-play-circle-o::before{content:"\f01d"}.fa-rotate-right::before,.fa-repeat::before{content:"\f01e"}.fa-refresh::before{content:"\f021"}.fa-list-alt::before{content:"\f022"}.fa-lock::before{content:"\f023"}.fa-flag::before{content:"\f024"}.fa-headphones::before{content:"\f025"}.fa-volume-off::before{content:"\f026"}.fa-volume-down::before{content:"\f027"}.fa-volume-up::before{content:"\f028"}.fa-qrcode::before{content:"\f029"}.fa-barcode::before{content:"\f02a"}.fa-tag::before{content:"\f02b"}.fa-tags::before{content:"\f02c"}.fa-book::before{content:"\f02d"}.fa-bookmark::before{content:"\f02e"}.fa-print::before{content:"\f02f"}.fa-camera::before{content:"\f030"}.fa-font::before{content:"\f031"}.fa-bold::before{content:"\f032"}.fa-italic::before{content:"\f033"}.fa-text-height::before{content:"\f034"}.fa-text-width::before{content:"\f035"}.fa-align-left::before{content:"\f036"}.fa-align-center::before{content:"\f037"}.fa-align-right::before{content:"\f038"}.fa-align-justify::before{content:"\f039"}.fa-list::before{content:"\f03a"}.fa-dedent::before,.fa-outdent::before{content:"\f03b"}.fa-indent::before{content:"\f03c"}.fa-video-camera::before{content:"\f03d"}.fa-photo::before,.fa-image::before,.fa-picture-o::before{content:"\f03e"}.fa-pencil::before{content:"\f040"}.fa-map-marker::before{content:"\f041"}.fa-adjust::before{content:"\f042"}.fa-tint::before{content:"\f043"}.fa-edit::before,.fa-pencil-square-o::before{content:"\f044"}.fa-share-square-o::before{content:"\f045"}.fa-check-square-o::before{content:"\f046"}.fa-arrows::before{content:"\f047"}.fa-step-backward::before{content:"\f048"}.fa-fast-backward::before{content:"\f049"}.fa-backward::before{content:"\f04a"}.fa-play::before{content:"\f04b"}.fa-pause::before{content:"\f04c"}.fa-stop::before{content:"\f04d"}.fa-forward::before{content:"\f04e"}.fa-fast-forward::before{content:"\f050"}.fa-step-forward::before{content:"\f051"}.fa-eject::before{content:"\f052"}.fa-chevron-left::before{content:"\f053"}.fa-chevron-right::before{content:"\f054"}.fa-plus-circle::before{content:"\f055"}.fa-minus-circle::before{content:"\f056"}.fa-times-circle::before{content:"\f057"}.fa-check-circle::before{content:"\f058"}.fa-question-circle::before{content:"\f059"}.fa-info-circle::before{content:"\f05a"}.fa-crosshairs::before{content:"\f05b"}.fa-times-circle-o::before{content:"\f05c"}.fa-check-circle-o::before{content:"\f05d"}.fa-ban::before{content:"\f05e"}.fa-arrow-left::before{content:"\f060"}.fa-arrow-right::before{content:"\f061"}.fa-arrow-up::before{content:"\f062"}.fa-arrow-down::before{content:"\f063"}.fa-mail-forward::before,.fa-share::before{content:"\f064"}.fa-expand::before{content:"\f065"}.fa-compress::before{content:"\f066"}.fa-plus::before{content:"\f067"}.fa-minus::before{content:"\f068"}.fa-asterisk::before{content:"\f069"}.fa-exclamation-circle::before{content:"\f06a"}.fa-gift::before{content:"\f06b"}.fa-leaf::before{content:"\f06c"}.fa-fire::before{content:"\f06d"}.fa-eye::before{content:"\f06e"}.fa-eye-slash::before{content:"\f070"}.fa-warning::before,.fa-exclamation-triangle::before{content:"\f071"}.fa-plane::before{content:"\f072"}.fa-calendar::before{content:"\f073"}.fa-random::before{content:"\f074"}.fa-comment::before{content:"\f075"}.fa-magnet::before{content:"\f076"}.fa-chevron-up::before{content:"\f077"}.fa-chevron-down::before{content:"\f078"}.fa-retweet::before{content:"\f079"}.fa-shopping-cart::before{content:"\f07a"}.fa-folder::before{content:"\f07b"}.fa-folder-open::before{content:"\f07c"}.fa-arrows-v::before{content:"\f07d"}.fa-arrows-h::before{content:"\f07e"}.fa-bar-chart-o::before,.fa-bar-chart::before{content:"\f080"}.fa-twitter-square::before{content:"\f081"}.fa-facebook-square::before{content:"\f082"}.fa-camera-retro::before{content:"\f083"}.fa-key::before{content:"\f084"}.fa-gears::before,.fa-cogs::before{content:"\f085"}.fa-comments::before{content:"\f086"}.fa-thumbs-o-up::before{content:"\f087"}.fa-thumbs-o-down::before{content:"\f088"}.fa-star-half::before{content:"\f089"}.fa-heart-o::before{content:"\f08a"}.fa-sign-out::before{content:"\f08b"}.fa-linkedin-square::before{content:"\f08c"}.fa-thumb-tack::before{content:"\f08d"}.fa-external-link::before{content:"\f08e"}.fa-sign-in::before{content:"\f090"}.fa-trophy::before{content:"\f091"}.fa-github-square::before{content:"\f092"}.fa-upload::before{content:"\f093"}.fa-lemon-o::before{content:"\f094"}.fa-phone::before{content:"\f095"}.fa-square-o::before{content:"\f096"}.fa-bookmark-o::before{content:"\f097"}.fa-phone-square::before{content:"\f098"}.fa-twitter::before{content:"\f099"}.fa-facebook-f::before,.fa-facebook::before{content:"\f09a"}.fa-github::before{content:"\f09b"}.fa-unlock::before{content:"\f09c"}.fa-credit-card::before{content:"\f09d"}.fa-feed::before,.fa-rss::before{content:"\f09e"}.fa-hdd-o::before{content:"\f0a0"}.fa-bullhorn::before{content:"\f0a1"}.fa-bell::before{content:"\f0f3"}.fa-certificate::before{content:"\f0a3"}.fa-hand-o-right::before{content:"\f0a4"}.fa-hand-o-left::before{content:"\f0a5"}.fa-hand-o-up::before{content:"\f0a6"}.fa-hand-o-down::before{content:"\f0a7"}.fa-arrow-circle-left::before{content:"\f0a8"}.fa-arrow-circle-right::before{content:"\f0a9"}.fa-arrow-circle-up::before{content:"\f0aa"}.fa-arrow-circle-down::before{content:"\f0ab"}.fa-globe::before{content:"\f0ac"}.fa-wrench::before{content:"\f0ad"}.fa-tasks::before{content:"\f0ae"}.fa-filter::before{content:"\f0b0"}.fa-briefcase::before{content:"\f0b1"}.fa-arrows-alt::before{content:"\f0b2"}.fa-group::before,.fa-users::before{content:"\f0c0"}.fa-chain::before,.fa-link::before{content:"\f0c1"}.fa-cloud::before{content:"\f0c2"}.fa-flask::before{content:"\f0c3"}.fa-cut::before,.fa-scissors::before{content:"\f0c4"}.fa-copy::before,.fa-files-o::before{content:"\f0c5"}.fa-paperclip::before{content:"\f0c6"}.fa-save::before,.fa-floppy-o::before{content:"\f0c7"}.fa-square::before{content:"\f0c8"}.fa-navicon::before,.fa-reorder::before,.fa-bars::before{content:"\f0c9"}.fa-list-ul::before{content:"\f0ca"}.fa-list-ol::before{content:"\f0cb"}.fa-strikethrough::before{content:"\f0cc"}.fa-underline::before{content:"\f0cd"}.fa-table::before{content:"\f0ce"}.fa-magic::before{content:"\f0d0"}.fa-truck::before{content:"\f0d1"}.fa-pinterest::before{content:"\f0d2"}.fa-pinterest-square::before{content:"\f0d3"}.fa-google-plus-square::before{content:"\f0d4"}.fa-google-plus::before{content:"\f0d5"}.fa-money::before{content:"\f0d6"}.fa-caret-down::before{content:"\f0d7"}.fa-caret-up::before{content:"\f0d8"}.fa-caret-left::before{content:"\f0d9"}.fa-caret-right::before{content:"\f0da"}.fa-columns::before{content:"\f0db"}.fa-unsorted::before,.fa-sort::before{content:"\f0dc"}.fa-sort-down::before,.fa-sort-desc::before{content:"\f0dd"}.fa-sort-up::before,.fa-sort-asc::before{content:"\f0de"}.fa-envelope::before{content:"\f0e0"}.fa-linkedin::before{content:"\f0e1"}.fa-rotate-left::before,.fa-undo::before{content:"\f0e2"}.fa-legal::before,.fa-gavel::before{content:"\f0e3"}.fa-dashboard::before,.fa-tachometer::before{content:"\f0e4"}.fa-comment-o::before{content:"\f0e5"}.fa-comments-o::before{content:"\f0e6"}.fa-flash::before,.fa-bolt::before{content:"\f0e7"}.fa-sitemap::before{content:"\f0e8"}.fa-umbrella::before{content:"\f0e9"}.fa-paste::before,.fa-clipboard::before{content:"\f0ea"}.fa-lightbulb-o::before{content:"\f0eb"}.fa-exchange::before{content:"\f0ec"}.fa-cloud-download::before{content:"\f0ed"}.fa-cloud-upload::before{content:"\f0ee"}.fa-user-md::before{content:"\f0f0"}.fa-stethoscope::before{content:"\f0f1"}.fa-suitcase::before{content:"\f0f2"}.fa-bell-o::before{content:"\f0a2"}.fa-coffee::before{content:"\f0f4"}.fa-cutlery::before{content:"\f0f5"}.fa-file-text-o::before{content:"\f0f6"}.fa-building-o::before{content:"\f0f7"}.fa-hospital-o::before{content:"\f0f8"}.fa-ambulance::before{content:"\f0f9"}.fa-medkit::before{content:"\f0fa"}.fa-fighter-jet::before{content:"\f0fb"}.fa-beer::before{content:"\f0fc"}.fa-h-square::before{content:"\f0fd"}.fa-plus-square::before{content:"\f0fe"}.fa-angle-double-left::before{content:"\f100"}.fa-angle-double-right::before{content:"\f101"}.fa-angle-double-up::before{content:"\f102"}.fa-angle-double-down::before{content:"\f103"}.fa-angle-left::before{content:"\f104"}.fa-angle-right::before{content:"\f105"}.fa-angle-up::before{content:"\f106"}.fa-angle-down::before{content:"\f107"}.fa-desktop::before{content:"\f108"}.fa-laptop::before{content:"\f109"}.fa-tablet::before{content:"\f10a"}.fa-mobile-phone::before,.fa-mobile::before{content:"\f10b"}.fa-circle-o::before{content:"\f10c"}.fa-quote-left::before{content:"\f10d"}.fa-quote-right::before{content:"\f10e"}.fa-spinner::before{content:"\f110"}.fa-circle::before{content:"\f111"}.fa-mail-reply::before,.fa-reply::before{content:"\f112"}.fa-github-alt::before{content:"\f113"}.fa-folder-o::before{content:"\f114"}.fa-folder-open-o::before{content:"\f115"}.fa-smile-o::before{content:"\f118"}.fa-frown-o::before{content:"\f119"}.fa-meh-o::before{content:"\f11a"}.fa-gamepad::before{content:"\f11b"}.fa-keyboard-o::before{content:"\f11c"}.fa-flag-o::before{content:"\f11d"}.fa-flag-checkered::before{content:"\f11e"}.fa-terminal::before{content:"\f120"}.fa-code::before{content:"\f121"}.fa-mail-reply-all::before,.fa-reply-all::before{content:"\f122"}.fa-star-half-empty::before,.fa-star-half-full::before,.fa-star-half-o::before{content:"\f123"}.fa-location-arrow::before{content:"\f124"}.fa-crop::before{content:"\f125"}.fa-code-fork::before{content:"\f126"}.fa-unlink::before,.fa-chain-broken::before{content:"\f127"}.fa-question::before{content:"\f128"}.fa-info::before{content:"\f129"}.fa-exclamation::before{content:"\f12a"}.fa-superscript::before{content:"\f12b"}.fa-subscript::before{content:"\f12c"}.fa-eraser::before{content:"\f12d"}.fa-puzzle-piece::before{content:"\f12e"}.fa-microphone::before{content:"\f130"}.fa-microphone-slash::before{content:"\f131"}.fa-shield::before{content:"\f132"}.fa-calendar-o::before{content:"\f133"}.fa-fire-extinguisher::before{content:"\f134"}.fa-rocket::before{content:"\f135"}.fa-maxcdn::before{content:"\f136"}.fa-chevron-circle-left::before{content:"\f137"}.fa-chevron-circle-right::before{content:"\f138"}.fa-chevron-circle-up::before{content:"\f139"}.fa-chevron-circle-down::before{content:"\f13a"}.fa-html5::before{content:"\f13b"}.fa-css3::before{content:"\f13c"}.fa-anchor::before{content:"\f13d"}.fa-unlock-alt::before{content:"\f13e"}.fa-bullseye::before{content:"\f140"}.fa-ellipsis-h::before{content:"\f141"}.fa-ellipsis-v::before{content:"\f142"}.fa-rss-square::before{content:"\f143"}.fa-play-circle::before{content:"\f144"}.fa-ticket::before{content:"\f145"}.fa-minus-square::before{content:"\f146"}.fa-minus-square-o::before{content:"\f147"}.fa-level-up::before{content:"\f148"}.fa-level-down::before{content:"\f149"}.fa-check-square::before{content:"\f14a"}.fa-pencil-square::before{content:"\f14b"}.fa-external-link-square::before{content:"\f14c"}.fa-share-square::before{content:"\f14d"}.fa-compass::before{content:"\f14e"}.fa-toggle-down::before,.fa-caret-square-o-down::before{content:"\f150"}.fa-toggle-up::before,.fa-caret-square-o-up::before{content:"\f151"}.fa-toggle-right::before,.fa-caret-square-o-right::before{content:"\f152"}.fa-euro::before,.fa-eur::before{content:"\f153"}.fa-gbp::before{content:"\f154"}.fa-dollar::before,.fa-usd::before{content:"\f155"}.fa-rupee::before,.fa-inr::before{content:"\f156"}.fa-cny::before,.fa-rmb::before,.fa-yen::before,.fa-jpy::before{content:"\f157"}.fa-ruble::before,.fa-rouble::before,.fa-rub::before{content:"\f158"}.fa-won::before,.fa-krw::before{content:"\f159"}.fa-bitcoin::before,.fa-btc::before{content:"\f15a"}.fa-file::before{content:"\f15b"}.fa-file-text::before{content:"\f15c"}.fa-sort-alpha-asc::before{content:"\f15d"}.fa-sort-alpha-desc::before{content:"\f15e"}.fa-sort-amount-asc::before{content:"\f160"}.fa-sort-amount-desc::before{content:"\f161"}.fa-sort-numeric-asc::before{content:"\f162"}.fa-sort-numeric-desc::before{content:"\f163"}.fa-thumbs-up::before{content:"\f164"}.fa-thumbs-down::before{content:"\f165"}.fa-youtube-square::before{content:"\f166"}.fa-youtube::before{content:"\f167"}.fa-xing::before{content:"\f168"}.fa-xing-square::before{content:"\f169"}.fa-youtube-play::before{content:"\f16a"}.fa-dropbox::before{content:"\f16b"}.fa-stack-overflow::before{content:"\f16c"}.fa-instagram::before{content:"\f16d"}.fa-flickr::before{content:"\f16e"}.fa-adn::before{content:"\f170"}.fa-bitbucket::before{content:"\f171"}.fa-bitbucket-square::before{content:"\f172"}.fa-tumblr::before{content:"\f173"}.fa-tumblr-square::before{content:"\f174"}.fa-long-arrow-down::before{content:"\f175"}.fa-long-arrow-up::before{content:"\f176"}.fa-long-arrow-left::before{content:"\f177"}.fa-long-arrow-right::before{content:"\f178"}.fa-apple::before{content:"\f179"}.fa-windows::before{content:"\f17a"}.fa-android::before{content:"\f17b"}.fa-linux::before{content:"\f17c"}.fa-dribbble::before{content:"\f17d"}.fa-skype::before{content:"\f17e"}.fa-foursquare::before{content:"\f180"}.fa-trello::before{content:"\f181"}.fa-female::before{content:"\f182"}.fa-male::before{content:"\f183"}.fa-gittip::before,.fa-gratipay::before{content:"\f184"}.fa-sun-o::before{content:"\f185"}.fa-moon-o::before{content:"\f186"}.fa-archive::before{content:"\f187"}.fa-bug::before{content:"\f188"}.fa-vk::before{content:"\f189"}.fa-weibo::before{content:"\f18a"}.fa-renren::before{content:"\f18b"}.fa-pagelines::before{content:"\f18c"}.fa-stack-exchange::before{content:"\f18d"}.fa-arrow-circle-o-right::before{content:"\f18e"}.fa-arrow-circle-o-left::before{content:"\f190"}.fa-toggle-left::before,.fa-caret-square-o-left::before{content:"\f191"}.fa-dot-circle-o::before{content:"\f192"}.fa-wheelchair::before{content:"\f193"}.fa-vimeo-square::before{content:"\f194"}.fa-turkish-lira::before,.fa-try::before{content:"\f195"}.fa-plus-square-o::before{content:"\f196"}.fa-space-shuttle::before{content:"\f197"}.fa-slack::before{content:"\f198"}.fa-envelope-square::before{content:"\f199"}.fa-wordpress::before{content:"\f19a"}.fa-openid::before{content:"\f19b"}.fa-institution::before,.fa-bank::before,.fa-university::before{content:"\f19c"}.fa-mortar-board::before,.fa-graduation-cap::before{content:"\f19d"}.fa-yahoo::before{content:"\f19e"}.fa-google::before{content:"\f1a0"}.fa-reddit::before{content:"\f1a1"}.fa-reddit-square::before{content:"\f1a2"}.fa-stumbleupon-circle::before{content:"\f1a3"}.fa-stumbleupon::before{content:"\f1a4"}.fa-delicious::before{content:"\f1a5"}.fa-digg::before{content:"\f1a6"}.fa-pied-piper-pp::before{content:"\f1a7"}.fa-pied-piper-alt::before{content:"\f1a8"}.fa-drupal::before{content:"\f1a9"}.fa-joomla::before{content:"\f1aa"}.fa-language::before{content:"\f1ab"}.fa-fax::before{content:"\f1ac"}.fa-building::before{content:"\f1ad"}.fa-child::before{content:"\f1ae"}.fa-paw::before{content:"\f1b0"}.fa-spoon::before{content:"\f1b1"}.fa-cube::before{content:"\f1b2"}.fa-cubes::before{content:"\f1b3"}.fa-behance::before{content:"\f1b4"}.fa-behance-square::before{content:"\f1b5"}.fa-steam::before{content:"\f1b6"}.fa-steam-square::before{content:"\f1b7"}.fa-recycle::before{content:"\f1b8"}.fa-automobile::before,.fa-car::before{content:"\f1b9"}.fa-cab::before,.fa-taxi::before{content:"\f1ba"}.fa-tree::before{content:"\f1bb"}.fa-spotify::before{content:"\f1bc"}.fa-deviantart::before{content:"\f1bd"}.fa-soundcloud::before{content:"\f1be"}.fa-database::before{content:"\f1c0"}.fa-file-pdf-o::before{content:"\f1c1"}.fa-file-word-o::before{content:"\f1c2"}.fa-file-excel-o::before{content:"\f1c3"}.fa-file-powerpoint-o::before{content:"\f1c4"}.fa-file-photo-o::before,.fa-file-picture-o::before,.fa-file-image-o::before{content:"\f1c5"}.fa-file-zip-o::before,.fa-file-archive-o::before{content:"\f1c6"}.fa-file-sound-o::before,.fa-file-audio-o::before{content:"\f1c7"}.fa-file-movie-o::before,.fa-file-video-o::before{content:"\f1c8"}.fa-file-code-o::before{content:"\f1c9"}.fa-vine::before{content:"\f1ca"}.fa-codepen::before{content:"\f1cb"}.fa-jsfiddle::before{content:"\f1cc"}.fa-life-bouy::before,.fa-life-buoy::before,.fa-life-saver::before,.fa-support::before,.fa-life-ring::before{content:"\f1cd"}.fa-circle-o-notch::before{content:"\f1ce"}.fa-ra::before,.fa-resistance::before,.fa-rebel::before{content:"\f1d0"}.fa-ge::before,.fa-empire::before{content:"\f1d1"}.fa-git-square::before{content:"\f1d2"}.fa-git::before{content:"\f1d3"}.fa-y-combinator-square::before,.fa-yc-square::before,.fa-hacker-news::before{content:"\f1d4"}.fa-tencent-weibo::before{content:"\f1d5"}.fa-qq::before{content:"\f1d6"}.fa-wechat::before,.fa-weixin::before{content:"\f1d7"}.fa-send::before,.fa-paper-plane::before{content:"\f1d8"}.fa-send-o::before,.fa-paper-plane-o::before{content:"\f1d9"}.fa-history::before{content:"\f1da"}.fa-circle-thin::before{content:"\f1db"}.fa-header::before{content:"\f1dc"}.fa-paragraph::before{content:"\f1dd"}.fa-sliders::before{content:"\f1de"}.fa-share-alt::before{content:"\f1e0"}.fa-share-alt-square::before{content:"\f1e1"}.fa-bomb::before{content:"\f1e2"}.fa-soccer-ball-o::before,.fa-futbol-o::before{content:"\f1e3"}.fa-tty::before{content:"\f1e4"}.fa-binoculars::before{content:"\f1e5"}.fa-plug::before{content:"\f1e6"}.fa-slideshare::before{content:"\f1e7"}.fa-twitch::before{content:"\f1e8"}.fa-yelp::before{content:"\f1e9"}.fa-newspaper-o::before{content:"\f1ea"}.fa-wifi::before{content:"\f1eb"}.fa-calculator::before{content:"\f1ec"}.fa-paypal::before{content:"\f1ed"}.fa-google-wallet::before{content:"\f1ee"}.fa-cc-visa::before{content:"\f1f0"}.fa-cc-mastercard::before{content:"\f1f1"}.fa-cc-discover::before{content:"\f1f2"}.fa-cc-amex::before{content:"\f1f3"}.fa-cc-paypal::before{content:"\f1f4"}.fa-cc-stripe::before{content:"\f1f5"}.fa-bell-slash::before{content:"\f1f6"}.fa-bell-slash-o::before{content:"\f1f7"}.fa-trash::before{content:"\f1f8"}.fa-copyright::before{content:"\f1f9"}.fa-at::before{content:"\f1fa"}.fa-eyedropper::before{content:"\f1fb"}.fa-paint-brush::before{content:"\f1fc"}.fa-birthday-cake::before{content:"\f1fd"}.fa-area-chart::before{content:"\f1fe"}.fa-pie-chart::before{content:"\f200"}.fa-line-chart::before{content:"\f201"}.fa-lastfm::before{content:"\f202"}.fa-lastfm-square::before{content:"\f203"}.fa-toggle-off::before{content:"\f204"}.fa-toggle-on::before{content:"\f205"}.fa-bicycle::before{content:"\f206"}.fa-bus::before{content:"\f207"}.fa-ioxhost::before{content:"\f208"}.fa-angellist::before{content:"\f209"}.fa-cc::before{content:"\f20a"}.fa-shekel::before,.fa-sheqel::before,.fa-ils::before{content:"\f20b"}.fa-meanpath::before{content:"\f20c"}.fa-buysellads::before{content:"\f20d"}.fa-connectdevelop::before{content:"\f20e"}.fa-dashcube::before{content:"\f210"}.fa-forumbee::before{content:"\f211"}.fa-leanpub::before{content:"\f212"}.fa-sellsy::before{content:"\f213"}.fa-shirtsinbulk::before{content:"\f214"}.fa-simplybuilt::before{content:"\f215"}.fa-skyatlas::before{content:"\f216"}.fa-cart-plus::before{content:"\f217"}.fa-cart-arrow-down::before{content:"\f218"}.fa-diamond::before{content:"\f219"}.fa-ship::before{content:"\f21a"}.fa-user-secret::before{content:"\f21b"}.fa-motorcycle::before{content:"\f21c"}.fa-street-div::before{content:"\f21d"}.fa-heartbeat::before{content:"\f21e"}.fa-venus::before{content:"\f221"}.fa-mars::before{content:"\f222"}.fa-mercury::before{content:"\f223"}.fa-intersex::before,.fa-transgender::before{content:"\f224"}.fa-transgender-alt::before{content:"\f225"}.fa-venus-double::before{content:"\f226"}.fa-mars-double::before{content:"\f227"}.fa-venus-mars::before{content:"\f228"}.fa-mars-stroke::before{content:"\f229"}.fa-mars-stroke-v::before{content:"\f22a"}.fa-mars-stroke-h::before{content:"\f22b"}.fa-neuter::before{content:"\f22c"}.fa-genderless::before{content:"\f22d"}.fa-facebook-official::before{content:"\f230"}.fa-pinterest-p::before{content:"\f231"}.fa-whatsapp::before{content:"\f232"}.fa-server::before{content:"\f233"}.fa-user-plus::before{content:"\f234"}.fa-user-times::before{content:"\f235"}.fa-hotel::before,.fa-bed::before{content:"\f236"}.fa-viacoin::before{content:"\f237"}.fa-train::before{content:"\f238"}.fa-subway::before{content:"\f239"}.fa-medium::before{content:"\f23a"}.fa-yc::before,.fa-y-combinator::before{content:"\f23b"}.fa-optin-monster::before{content:"\f23c"}.fa-opencart::before{content:"\f23d"}.fa-expeditedssl::before{content:"\f23e"}.fa-battery-4::before,.fa-battery::before,.fa-battery-full::before{content:"\f240"}.fa-battery-3::before,.fa-battery-three-quarters::before{content:"\f241"}.fa-battery-2::before,.fa-battery-half::before{content:"\f242"}.fa-battery-1::before,.fa-battery-quarter::before{content:"\f243"}.fa-battery-0::before,.fa-battery-empty::before{content:"\f244"}.fa-mouse-pointer::before{content:"\f245"}.fa-i-cursor::before{content:"\f246"}.fa-object-group::before{content:"\f247"}.fa-object-ungroup::before{content:"\f248"}.fa-sticky-note::before{content:"\f249"}.fa-sticky-note-o::before{content:"\f24a"}.fa-cc-jcb::before{content:"\f24b"}.fa-cc-diners-club::before{content:"\f24c"}.fa-clone::before{content:"\f24d"}.fa-balance-scale::before{content:"\f24e"}.fa-hourglass-o::before{content:"\f250"}.fa-hourglass-1::before,.fa-hourglass-start::before{content:"\f251"}.fa-hourglass-2::before,.fa-hourglass-half::before{content:"\f252"}.fa-hourglass-3::before,.fa-hourglass-end::before{content:"\f253"}.fa-hourglass::before{content:"\f254"}.fa-hand-grab-o::before,.fa-hand-rock-o::before{content:"\f255"}.fa-hand-stop-o::before,.fa-hand-paper-o::before{content:"\f256"}.fa-hand-scissors-o::before{content:"\f257"}.fa-hand-lizard-o::before{content:"\f258"}.fa-hand-spock-o::before{content:"\f259"}.fa-hand-pointer-o::before{content:"\f25a"}.fa-hand-peace-o::before{content:"\f25b"}.fa-trademark::before{content:"\f25c"}.fa-registered::before{content:"\f25d"}.fa-creative-commons::before{content:"\f25e"}.fa-gg::before{content:"\f260"}.fa-gg-circle::before{content:"\f261"}.fa-tripadvisor::before{content:"\f262"}.fa-odnoklassniki::before{content:"\f263"}.fa-odnoklassniki-square::before{content:"\f264"}.fa-get-pocket::before{content:"\f265"}.fa-wikipedia-w::before{content:"\f266"}.fa-safari::before{content:"\f267"}.fa-chrome::before{content:"\f268"}.fa-firefox::before{content:"\f269"}.fa-opera::before{content:"\f26a"}.fa-internet-explorer::before{content:"\f26b"}.fa-tv::before,.fa-television::before{content:"\f26c"}.fa-contao::before{content:"\f26d"}.fa-500px::before{content:"\f26e"}.fa-amazon::before{content:"\f270"}.fa-calendar-plus-o::before{content:"\f271"}.fa-calendar-minus-o::before{content:"\f272"}.fa-calendar-times-o::before{content:"\f273"}.fa-calendar-check-o::before{content:"\f274"}.fa-industry::before{content:"\f275"}.fa-map-pin::before{content:"\f276"}.fa-map-signs::before{content:"\f277"}.fa-map-o::before{content:"\f278"}.fa-map::before{content:"\f279"}.fa-commenting::before{content:"\f27a"}.fa-commenting-o::before{content:"\f27b"}.fa-houzz::before{content:"\f27c"}.fa-vimeo::before{content:"\f27d"}.fa-black-tie::before{content:"\f27e"}.fa-fonticons::before{content:"\f280"}.fa-reddit-alien::before{content:"\f281"}.fa-edge::before{content:"\f282"}.fa-credit-card-alt::before{content:"\f283"}.fa-codiepie::before{content:"\f284"}.fa-modx::before{content:"\f285"}.fa-fort-awesome::before{content:"\f286"}.fa-usb::before{content:"\f287"}.fa-product-hunt::before{content:"\f288"}.fa-mixcloud::before{content:"\f289"}.fa-scribd::before{content:"\f28a"}.fa-pause-circle::before{content:"\f28b"}.fa-pause-circle-o::before{content:"\f28c"}.fa-stop-circle::before{content:"\f28d"}.fa-stop-circle-o::before{content:"\f28e"}.fa-shopping-bag::before{content:"\f290"}.fa-shopping-basket::before{content:"\f291"}.fa-hashtag::before{content:"\f292"}.fa-bluetooth::before{content:"\f293"}.fa-bluetooth-b::before{content:"\f294"}.fa-percent::before{content:"\f295"}.fa-gitlab::before{content:"\f296"}.fa-wpbeginner::before{content:"\f297"}.fa-wpforms::before{content:"\f298"}.fa-envira::before{content:"\f299"}.fa-universal-access::before{content:"\f29a"}.fa-wheelchair-alt::before{content:"\f29b"}.fa-question-circle-o::before{content:"\f29c"}.fa-blind::before{content:"\f29d"}.fa-audio-description::before{content:"\f29e"}.fa-volume-control-phone::before{content:"\f2a0"}.fa-braille::before{content:"\f2a1"}.fa-assistive-listening-systems::before{content:"\f2a2"}.fa-asl-interpreting::before,.fa-american-sign-language-interpreting::before{content:"\f2a3"}.fa-deafness::before,.fa-hard-of-hearing::before,.fa-deaf::before{content:"\f2a4"}.fa-glide::before{content:"\f2a5"}.fa-glide-g::before{content:"\f2a6"}.fa-signing::before,.fa-sign-language::before{content:"\f2a7"}.fa-low-vision::before{content:"\f2a8"}.fa-viadeo::before{content:"\f2a9"}.fa-viadeo-square::before{content:"\f2aa"}.fa-snapchat::before{content:"\f2ab"}.fa-snapchat-ghost::before{content:"\f2ac"}.fa-snapchat-square::before{content:"\f2ad"}.fa-pied-piper::before{content:"\f2ae"}.fa-first-order::before{content:"\f2b0"}.fa-yoast::before{content:"\f2b1"}.fa-themeisle::before{content:"\f2b2"}.fa-google-plus-circle::before,.fa-google-plus-official::before{content:"\f2b3"}.fa-fa::before,.fa-font-awesome::before{content:"\f2b4"}.fa-handshake-o::before{content:"\f2b5"}.fa-envelope-open::before{content:"\f2b6"}.fa-envelope-open-o::before{content:"\f2b7"}.fa-linode::before{content:"\f2b8"}.fa-address-book::before{content:"\f2b9"}.fa-address-book-o::before{content:"\f2ba"}.fa-vcard::before,.fa-address-card::before{content:"\f2bb"}.fa-vcard-o::before,.fa-address-card-o::before{content:"\f2bc"}.fa-user-circle::before{content:"\f2bd"}.fa-user-circle-o::before{content:"\f2be"}.fa-user-o::before{content:"\f2c0"}.fa-id-badge::before{content:"\f2c1"}.fa-drivers-license::before,.fa-id-card::before{content:"\f2c2"}.fa-drivers-license-o::before,.fa-id-card-o::before{content:"\f2c3"}.fa-quora::before{content:"\f2c4"}.fa-free-code-camp::before{content:"\f2c5"}.fa-telegram::before{content:"\f2c6"}.fa-thermometer-4::before,.fa-thermometer::before,.fa-thermometer-full::before{content:"\f2c7"}.fa-thermometer-3::before,.fa-thermometer-three-quarters::before{content:"\f2c8"}.fa-thermometer-2::before,.fa-thermometer-half::before{content:"\f2c9"}.fa-thermometer-1::before,.fa-thermometer-quarter::before{content:"\f2ca"}.fa-thermometer-0::before,.fa-thermometer-empty::before{content:"\f2cb"}.fa-shower::before{content:"\f2cc"}.fa-bathtub::before,.fa-s15::before,.fa-bath::before{content:"\f2cd"}.fa-podcast::before{content:"\f2ce"}.fa-window-maximize::before{content:"\f2d0"}.fa-window-minimize::before{content:"\f2d1"}.fa-window-restore::before{content:"\f2d2"}.fa-times-rectangle::before,.fa-window-close::before{content:"\f2d3"}.fa-times-rectangle-o::before,.fa-window-close-o::before{content:"\f2d4"}.fa-bandcamp::before{content:"\f2d5"}.fa-grav::before{content:"\f2d6"}.fa-etsy::before{content:"\f2d7"}.fa-imdb::before{content:"\f2d8"}.fa-ravelry::before{content:"\f2d9"}.fa-eercast::before{content:"\f2da"}.fa-microchip::before{content:"\f2db"}.fa-snowflake-o::before{content:"\f2dc"}.fa-superpowers::before{content:"\f2dd"}.fa-wpexplorer::before{content:"\f2de"}.fa-meetup::before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
5
-
6
- /* 斜体(改用字体图标) */
7
- i {font-family: "FontAwesome";}