stump-cli 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1310) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +3 -16
  6. data/Rakefile +2 -0
  7. data/bin/stump-cli +58 -0
  8. data/lib/stump-cli/version.rb +3 -0
  9. data/lib/stump.rb +5 -0
  10. data/lib/wp/Movefile-example +62 -0
  11. data/lib/wp/README.md +25 -0
  12. data/lib/wp/index.php +17 -0
  13. data/lib/wp/license.txt +385 -0
  14. data/lib/wp/readme.html +96 -0
  15. data/lib/wp/wp-activate.php +131 -0
  16. data/lib/wp/wp-admin/about.php +193 -0
  17. data/lib/wp/wp-admin/admin-ajax.php +98 -0
  18. data/lib/wp/wp-admin/admin-footer.php +99 -0
  19. data/lib/wp/wp-admin/admin-functions.php +15 -0
  20. data/lib/wp/wp-admin/admin-header.php +243 -0
  21. data/lib/wp/wp-admin/admin-post.php +71 -0
  22. data/lib/wp/wp-admin/admin.php +347 -0
  23. data/lib/wp/wp-admin/async-upload.php +114 -0
  24. data/lib/wp/wp-admin/comment.php +299 -0
  25. data/lib/wp/wp-admin/credits.php +192 -0
  26. data/lib/wp/wp-admin/css/about-rtl.css +446 -0
  27. data/lib/wp/wp-admin/css/about.css +446 -0
  28. data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
  29. data/lib/wp/wp-admin/css/admin-menu.css +917 -0
  30. data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
  31. data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
  32. data/lib/wp/wp-admin/css/color-picker.css +127 -0
  33. data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
  34. data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
  35. data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
  36. data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
  37. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
  38. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
  39. data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
  40. data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
  41. data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
  42. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
  43. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
  44. data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
  45. data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
  46. data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
  47. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
  48. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
  49. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
  50. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
  51. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
  52. data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
  53. data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
  54. data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
  55. data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
  56. data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
  57. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
  58. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
  59. data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
  60. data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
  61. data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
  62. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
  63. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
  64. data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
  65. data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
  66. data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
  67. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
  68. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
  69. data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
  70. data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
  71. data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
  72. data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
  73. data/lib/wp/wp-admin/css/common.css +3212 -0
  74. data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
  75. data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
  76. data/lib/wp/wp-admin/css/customize-controls.css +889 -0
  77. data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
  78. data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
  79. data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
  80. data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
  81. data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
  82. data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
  83. data/lib/wp/wp-admin/css/dashboard.css +1116 -0
  84. data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
  85. data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
  86. data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
  87. data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
  88. data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
  89. data/lib/wp/wp-admin/css/edit.css +1501 -0
  90. data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
  91. data/lib/wp/wp-admin/css/farbtastic.css +41 -0
  92. data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
  93. data/lib/wp/wp-admin/css/forms.css +992 -0
  94. data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
  95. data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
  96. data/lib/wp/wp-admin/css/ie.css +785 -0
  97. data/lib/wp/wp-admin/css/ie.min.css +1 -0
  98. data/lib/wp/wp-admin/css/install-rtl.css +389 -0
  99. data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
  100. data/lib/wp/wp-admin/css/install.css +389 -0
  101. data/lib/wp/wp-admin/css/install.min.css +1 -0
  102. data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
  103. data/lib/wp/wp-admin/css/l10n.css +101 -0
  104. data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
  105. data/lib/wp/wp-admin/css/list-tables.css +1875 -0
  106. data/lib/wp/wp-admin/css/login-rtl.css +269 -0
  107. data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
  108. data/lib/wp/wp-admin/css/login.css +269 -0
  109. data/lib/wp/wp-admin/css/login.min.css +1 -0
  110. data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
  111. data/lib/wp/wp-admin/css/media.css +1196 -0
  112. data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
  113. data/lib/wp/wp-admin/css/nav-menus.css +857 -0
  114. data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
  115. data/lib/wp/wp-admin/css/press-this.css +458 -0
  116. data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
  117. data/lib/wp/wp-admin/css/revisions.css +574 -0
  118. data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
  119. data/lib/wp/wp-admin/css/themes.css +1732 -0
  120. data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
  121. data/lib/wp/wp-admin/css/widgets.css +577 -0
  122. data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
  123. data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
  124. data/lib/wp/wp-admin/css/wp-admin.css +14 -0
  125. data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
  126. data/lib/wp/wp-admin/custom-background.php +482 -0
  127. data/lib/wp/wp-admin/custom-header.php +1366 -0
  128. data/lib/wp/wp-admin/customize.php +278 -0
  129. data/lib/wp/wp-admin/edit-comments.php +254 -0
  130. data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
  131. data/lib/wp/wp-admin/edit-form-comment.php +160 -0
  132. data/lib/wp/wp-admin/edit-link-form.php +150 -0
  133. data/lib/wp/wp-admin/edit-tag-form.php +204 -0
  134. data/lib/wp/wp-admin/edit-tags.php +591 -0
  135. data/lib/wp/wp-admin/edit.php +330 -0
  136. data/lib/wp/wp-admin/export.php +243 -0
  137. data/lib/wp/wp-admin/freedoms.php +57 -0
  138. data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
  139. data/lib/wp/wp-admin/images/align-center.png +0 -0
  140. data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
  141. data/lib/wp/wp-admin/images/align-left.png +0 -0
  142. data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
  143. data/lib/wp/wp-admin/images/align-none.png +0 -0
  144. data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
  145. data/lib/wp/wp-admin/images/align-right.png +0 -0
  146. data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
  147. data/lib/wp/wp-admin/images/arrows.png +0 -0
  148. data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
  149. data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
  150. data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
  151. data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
  152. data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
  153. data/lib/wp/wp-admin/images/date-button.gif +0 -0
  154. data/lib/wp/wp-admin/images/generic.png +0 -0
  155. data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
  156. data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
  157. data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
  158. data/lib/wp/wp-admin/images/icons32.png +0 -0
  159. data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
  160. data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
  161. data/lib/wp/wp-admin/images/list-2x.png +0 -0
  162. data/lib/wp/wp-admin/images/list.png +0 -0
  163. data/lib/wp/wp-admin/images/loading.gif +0 -0
  164. data/lib/wp/wp-admin/images/marker.png +0 -0
  165. data/lib/wp/wp-admin/images/mask.png +0 -0
  166. data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
  167. data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
  168. data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
  169. data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
  170. data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
  171. data/lib/wp/wp-admin/images/media-button.png +0 -0
  172. data/lib/wp/wp-admin/images/menu-2x.png +0 -0
  173. data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
  174. data/lib/wp/wp-admin/images/menu-vs.png +0 -0
  175. data/lib/wp/wp-admin/images/menu.png +0 -0
  176. data/lib/wp/wp-admin/images/no.png +0 -0
  177. data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
  178. data/lib/wp/wp-admin/images/post-formats.png +0 -0
  179. data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
  180. data/lib/wp/wp-admin/images/post-formats32.png +0 -0
  181. data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
  182. data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
  183. data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
  184. data/lib/wp/wp-admin/images/resize.gif +0 -0
  185. data/lib/wp/wp-admin/images/se.png +0 -0
  186. data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
  187. data/lib/wp/wp-admin/images/sort.gif +0 -0
  188. data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
  189. data/lib/wp/wp-admin/images/spinner.gif +0 -0
  190. data/lib/wp/wp-admin/images/stars-2x.png +0 -0
  191. data/lib/wp/wp-admin/images/stars.png +0 -0
  192. data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
  193. data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
  194. data/lib/wp/wp-admin/images/wheel.png +0 -0
  195. data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
  196. data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
  197. data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
  198. data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
  199. data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
  200. data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
  201. data/lib/wp/wp-admin/images/xit.gif +0 -0
  202. data/lib/wp/wp-admin/images/yes.png +0 -0
  203. data/lib/wp/wp-admin/import.php +132 -0
  204. data/lib/wp/wp-admin/includes/admin.php +74 -0
  205. data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
  206. data/lib/wp/wp-admin/includes/bookmark.php +305 -0
  207. data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
  208. data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
  209. data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
  210. data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
  211. data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
  212. data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
  213. data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
  214. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
  215. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
  216. data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
  217. data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
  218. data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
  219. data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
  220. data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
  221. data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
  222. data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
  223. data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
  224. data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
  225. data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
  226. data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
  227. data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
  228. data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
  229. data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
  230. data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
  231. data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
  232. data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
  233. data/lib/wp/wp-admin/includes/comment.php +171 -0
  234. data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
  235. data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
  236. data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
  237. data/lib/wp/wp-admin/includes/export.php +508 -0
  238. data/lib/wp/wp-admin/includes/file.php +1152 -0
  239. data/lib/wp/wp-admin/includes/image-edit.php +828 -0
  240. data/lib/wp/wp-admin/includes/image.php +598 -0
  241. data/lib/wp/wp-admin/includes/import.php +206 -0
  242. data/lib/wp/wp-admin/includes/list-table.php +113 -0
  243. data/lib/wp/wp-admin/includes/media.php +3012 -0
  244. data/lib/wp/wp-admin/includes/menu.php +322 -0
  245. data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
  246. data/lib/wp/wp-admin/includes/misc.php +845 -0
  247. data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
  248. data/lib/wp/wp-admin/includes/ms.php +814 -0
  249. data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
  250. data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
  251. data/lib/wp/wp-admin/includes/plugin.php +1899 -0
  252. data/lib/wp/wp-admin/includes/post.php +1661 -0
  253. data/lib/wp/wp-admin/includes/revision.php +228 -0
  254. data/lib/wp/wp-admin/includes/schema.php +1038 -0
  255. data/lib/wp/wp-admin/includes/screen.php +1179 -0
  256. data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
  257. data/lib/wp/wp-admin/includes/template.php +2157 -0
  258. data/lib/wp/wp-admin/includes/theme-install.php +205 -0
  259. data/lib/wp/wp-admin/includes/theme.php +474 -0
  260. data/lib/wp/wp-admin/includes/translation-install.php +240 -0
  261. data/lib/wp/wp-admin/includes/update-core.php +1186 -0
  262. data/lib/wp/wp-admin/includes/update.php +432 -0
  263. data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
  264. data/lib/wp/wp-admin/includes/user.php +442 -0
  265. data/lib/wp/wp-admin/includes/widgets.php +245 -0
  266. data/lib/wp/wp-admin/index.php +131 -0
  267. data/lib/wp/wp-admin/install-helper.php +199 -0
  268. data/lib/wp/wp-admin/install.php +305 -0
  269. data/lib/wp/wp-admin/js/accordion.js +143 -0
  270. data/lib/wp/wp-admin/js/accordion.min.js +1 -0
  271. data/lib/wp/wp-admin/js/color-picker.js +155 -0
  272. data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
  273. data/lib/wp/wp-admin/js/comment.js +50 -0
  274. data/lib/wp/wp-admin/js/comment.min.js +1 -0
  275. data/lib/wp/wp-admin/js/common.js +804 -0
  276. data/lib/wp/wp-admin/js/common.min.js +1 -0
  277. data/lib/wp/wp-admin/js/custom-background.js +75 -0
  278. data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
  279. data/lib/wp/wp-admin/js/custom-header.js +61 -0
  280. data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
  281. data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
  282. data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
  283. data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
  284. data/lib/wp/wp-admin/js/dashboard.js +190 -0
  285. data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
  286. data/lib/wp/wp-admin/js/edit-comments.js +625 -0
  287. data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
  288. data/lib/wp/wp-admin/js/editor-expand.js +705 -0
  289. data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
  290. data/lib/wp/wp-admin/js/editor.js +324 -0
  291. data/lib/wp/wp-admin/js/editor.min.js +1 -0
  292. data/lib/wp/wp-admin/js/farbtastic.js +276 -0
  293. data/lib/wp/wp-admin/js/gallery.js +237 -0
  294. data/lib/wp/wp-admin/js/gallery.min.js +1 -0
  295. data/lib/wp/wp-admin/js/image-edit.js +633 -0
  296. data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
  297. data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
  298. data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
  299. data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
  300. data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
  301. data/lib/wp/wp-admin/js/iris.min.js +4 -0
  302. data/lib/wp/wp-admin/js/language-chooser.js +26 -0
  303. data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
  304. data/lib/wp/wp-admin/js/link.js +69 -0
  305. data/lib/wp/wp-admin/js/link.min.js +1 -0
  306. data/lib/wp/wp-admin/js/media-gallery.js +26 -0
  307. data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
  308. data/lib/wp/wp-admin/js/media-upload.js +69 -0
  309. data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
  310. data/lib/wp/wp-admin/js/media.js +111 -0
  311. data/lib/wp/wp-admin/js/media.min.js +1 -0
  312. data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
  313. data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
  314. data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
  315. data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
  316. data/lib/wp/wp-admin/js/plugin-install.js +76 -0
  317. data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
  318. data/lib/wp/wp-admin/js/post.js +1094 -0
  319. data/lib/wp/wp-admin/js/post.min.js +1 -0
  320. data/lib/wp/wp-admin/js/postbox.js +199 -0
  321. data/lib/wp/wp-admin/js/postbox.min.js +1 -0
  322. data/lib/wp/wp-admin/js/revisions.js +1110 -0
  323. data/lib/wp/wp-admin/js/revisions.min.js +1 -0
  324. data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
  325. data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
  326. data/lib/wp/wp-admin/js/svg-painter.js +240 -0
  327. data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
  328. data/lib/wp/wp-admin/js/tags.js +72 -0
  329. data/lib/wp/wp-admin/js/tags.min.js +1 -0
  330. data/lib/wp/wp-admin/js/theme.js +1691 -0
  331. data/lib/wp/wp-admin/js/theme.min.js +1 -0
  332. data/lib/wp/wp-admin/js/updates.js +65 -0
  333. data/lib/wp/wp-admin/js/updates.min.js +1 -0
  334. data/lib/wp/wp-admin/js/user-profile.js +127 -0
  335. data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
  336. data/lib/wp/wp-admin/js/user-suggest.js +30 -0
  337. data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
  338. data/lib/wp/wp-admin/js/widgets.js +494 -0
  339. data/lib/wp/wp-admin/js/widgets.min.js +1 -0
  340. data/lib/wp/wp-admin/js/word-count.js +44 -0
  341. data/lib/wp/wp-admin/js/word-count.min.js +1 -0
  342. data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
  343. data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
  344. data/lib/wp/wp-admin/js/xfn.js +17 -0
  345. data/lib/wp/wp-admin/js/xfn.min.js +1 -0
  346. data/lib/wp/wp-admin/link-add.php +29 -0
  347. data/lib/wp/wp-admin/link-manager.php +99 -0
  348. data/lib/wp/wp-admin/link-parse-opml.php +84 -0
  349. data/lib/wp/wp-admin/link.php +117 -0
  350. data/lib/wp/wp-admin/load-scripts.php +162 -0
  351. data/lib/wp/wp-admin/load-styles.php +153 -0
  352. data/lib/wp/wp-admin/maint/repair.php +124 -0
  353. data/lib/wp/wp-admin/media-new.php +84 -0
  354. data/lib/wp/wp-admin/media-upload.php +100 -0
  355. data/lib/wp/wp-admin/media.php +146 -0
  356. data/lib/wp/wp-admin/menu-header.php +227 -0
  357. data/lib/wp/wp-admin/menu.php +255 -0
  358. data/lib/wp/wp-admin/moderation.php +12 -0
  359. data/lib/wp/wp-admin/ms-admin.php +13 -0
  360. data/lib/wp/wp-admin/ms-delete-site.php +91 -0
  361. data/lib/wp/wp-admin/ms-edit.php +13 -0
  362. data/lib/wp/wp-admin/ms-options.php +12 -0
  363. data/lib/wp/wp-admin/ms-sites.php +13 -0
  364. data/lib/wp/wp-admin/ms-themes.php +13 -0
  365. data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
  366. data/lib/wp/wp-admin/ms-users.php +13 -0
  367. data/lib/wp/wp-admin/my-sites.php +145 -0
  368. data/lib/wp/wp-admin/nav-menus.php +798 -0
  369. data/lib/wp/wp-admin/network.php +561 -0
  370. data/lib/wp/wp-admin/network/about.php +16 -0
  371. data/lib/wp/wp-admin/network/admin.php +32 -0
  372. data/lib/wp/wp-admin/network/credits.php +16 -0
  373. data/lib/wp/wp-admin/network/edit.php +42 -0
  374. data/lib/wp/wp-admin/network/freedoms.php +16 -0
  375. data/lib/wp/wp-admin/network/index.php +79 -0
  376. data/lib/wp/wp-admin/network/menu.php +63 -0
  377. data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
  378. data/lib/wp/wp-admin/network/plugin-install.php +19 -0
  379. data/lib/wp/wp-admin/network/plugins.php +16 -0
  380. data/lib/wp/wp-admin/network/profile.php +16 -0
  381. data/lib/wp/wp-admin/network/settings.php +347 -0
  382. data/lib/wp/wp-admin/network/setup.php +16 -0
  383. data/lib/wp/wp-admin/network/site-info.php +178 -0
  384. data/lib/wp/wp-admin/network/site-new.php +153 -0
  385. data/lib/wp/wp-admin/network/site-settings.php +173 -0
  386. data/lib/wp/wp-admin/network/site-themes.php +185 -0
  387. data/lib/wp/wp-admin/network/site-users.php +319 -0
  388. data/lib/wp/wp-admin/network/sites.php +275 -0
  389. data/lib/wp/wp-admin/network/theme-editor.php +16 -0
  390. data/lib/wp/wp-admin/network/theme-install.php +19 -0
  391. data/lib/wp/wp-admin/network/themes.php +291 -0
  392. data/lib/wp/wp-admin/network/update-core.php +16 -0
  393. data/lib/wp/wp-admin/network/update.php +19 -0
  394. data/lib/wp/wp-admin/network/upgrade.php +120 -0
  395. data/lib/wp/wp-admin/network/user-edit.php +16 -0
  396. data/lib/wp/wp-admin/network/user-new.php +106 -0
  397. data/lib/wp/wp-admin/network/users.php +296 -0
  398. data/lib/wp/wp-admin/options-discussion.php +273 -0
  399. data/lib/wp/wp-admin/options-general.php +355 -0
  400. data/lib/wp/wp-admin/options-head.php +18 -0
  401. data/lib/wp/wp-admin/options-media.php +136 -0
  402. data/lib/wp/wp-admin/options-permalink.php +289 -0
  403. data/lib/wp/wp-admin/options-reading.php +184 -0
  404. data/lib/wp/wp-admin/options-writing.php +194 -0
  405. data/lib/wp/wp-admin/options.php +265 -0
  406. data/lib/wp/wp-admin/plugin-editor.php +279 -0
  407. data/lib/wp/wp-admin/plugin-install.php +134 -0
  408. data/lib/wp/wp-admin/plugins.php +474 -0
  409. data/lib/wp/wp-admin/post-new.php +74 -0
  410. data/lib/wp/wp-admin/post.php +318 -0
  411. data/lib/wp/wp-admin/press-this.php +691 -0
  412. data/lib/wp/wp-admin/profile.php +18 -0
  413. data/lib/wp/wp-admin/revision.php +221 -0
  414. data/lib/wp/wp-admin/setup-config.php +345 -0
  415. data/lib/wp/wp-admin/theme-editor.php +243 -0
  416. data/lib/wp/wp-admin/theme-install.php +278 -0
  417. data/lib/wp/wp-admin/themes.php +374 -0
  418. data/lib/wp/wp-admin/tools.php +75 -0
  419. data/lib/wp/wp-admin/update-core.php +653 -0
  420. data/lib/wp/wp-admin/update.php +272 -0
  421. data/lib/wp/wp-admin/upgrade-functions.php +12 -0
  422. data/lib/wp/wp-admin/upgrade.php +116 -0
  423. data/lib/wp/wp-admin/upload.php +292 -0
  424. data/lib/wp/wp-admin/user-edit.php +557 -0
  425. data/lib/wp/wp-admin/user-new.php +439 -0
  426. data/lib/wp/wp-admin/user/about.php +13 -0
  427. data/lib/wp/wp-admin/user/admin.php +32 -0
  428. data/lib/wp/wp-admin/user/credits.php +13 -0
  429. data/lib/wp/wp-admin/user/freedoms.php +13 -0
  430. data/lib/wp/wp-admin/user/index.php +12 -0
  431. data/lib/wp/wp-admin/user/menu.php +22 -0
  432. data/lib/wp/wp-admin/user/profile.php +12 -0
  433. data/lib/wp/wp-admin/user/user-edit.php +12 -0
  434. data/lib/wp/wp-admin/users.php +460 -0
  435. data/lib/wp/wp-admin/widgets.php +442 -0
  436. data/lib/wp/wp-blog-header.php +18 -0
  437. data/lib/wp/wp-comments-post.php +164 -0
  438. data/lib/wp/wp-config-sample.php +80 -0
  439. data/lib/wp/wp-content/index.php +2 -0
  440. data/lib/wp/wp-content/plugins/hello.php +82 -0
  441. data/lib/wp/wp-content/plugins/index.php +2 -0
  442. data/lib/wp/wp-content/themes/index.php +2 -0
  443. data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
  444. data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
  445. data/lib/wp/wp-content/themes/stump/404.php +13 -0
  446. data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
  447. data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
  448. data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
  449. data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
  450. data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
  451. data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
  452. data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
  453. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
  454. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
  455. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  456. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  457. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  458. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  459. data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
  460. data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
  461. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
  462. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
  463. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
  464. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
  465. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
  466. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
  467. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
  468. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
  469. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
  470. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
  471. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
  472. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
  473. data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
  474. data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
  475. data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
  476. data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
  477. data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
  478. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
  479. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
  480. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
  481. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
  482. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
  483. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
  484. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
  485. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
  486. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
  487. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
  488. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
  489. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
  490. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
  491. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
  492. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
  493. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
  494. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
  495. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
  496. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
  497. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
  498. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
  499. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
  500. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
  501. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
  502. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
  503. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
  504. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
  505. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
  506. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
  507. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
  508. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
  509. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
  510. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
  511. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
  512. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
  513. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
  514. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
  515. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
  516. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
  517. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
  518. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
  519. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
  520. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
  521. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
  522. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
  523. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
  524. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
  525. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
  526. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
  527. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
  528. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
  529. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
  530. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
  531. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
  532. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
  533. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
  534. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
  535. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
  536. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
  537. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
  538. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
  539. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
  540. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
  541. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
  542. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
  543. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
  544. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
  545. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
  546. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
  547. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
  548. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
  549. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
  550. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
  551. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
  552. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
  553. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
  554. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
  555. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
  556. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
  557. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
  558. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
  559. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
  560. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
  561. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
  562. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
  563. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
  564. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
  565. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
  566. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
  567. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
  568. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
  569. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
  570. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
  571. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
  572. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
  573. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
  574. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
  575. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
  576. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
  577. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
  578. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
  579. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
  580. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
  581. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
  582. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
  583. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
  584. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
  585. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
  586. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
  587. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
  588. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
  589. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
  590. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
  591. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
  592. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
  593. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
  594. data/lib/wp/wp-content/themes/stump/base.php +36 -0
  595. data/lib/wp/wp-content/themes/stump/functions.php +19 -0
  596. data/lib/wp/wp-content/themes/stump/index.php +21 -0
  597. data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
  598. data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
  599. data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
  600. data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
  601. data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
  602. data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
  603. data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
  604. data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
  605. data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
  606. data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
  607. data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
  608. data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
  609. data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
  610. data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
  611. data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
  612. data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
  613. data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
  614. data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
  615. data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
  616. data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
  617. data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
  618. data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
  619. data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
  620. data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
  621. data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
  622. data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
  623. data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
  624. data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
  625. data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
  626. data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
  627. data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
  628. data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
  629. data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
  630. data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
  631. data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
  632. data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
  633. data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
  634. data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
  635. data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
  636. data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
  637. data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
  638. data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
  639. data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
  640. data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
  641. data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
  642. data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
  643. data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
  644. data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
  645. data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
  646. data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
  647. data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
  648. data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
  649. data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
  650. data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
  651. data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
  652. data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
  653. data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
  654. data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
  655. data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
  656. data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
  657. data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
  658. data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
  659. data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
  660. data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
  661. data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
  662. data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
  663. data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
  664. data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
  665. data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
  666. data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
  667. data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
  668. data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
  669. data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
  670. data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
  671. data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
  672. data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
  673. data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
  674. data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
  675. data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
  676. data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
  677. data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
  678. data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
  679. data/lib/wp/wp-content/themes/stump/package.json +32 -0
  680. data/lib/wp/wp-content/themes/stump/page.php +2 -0
  681. data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
  682. data/lib/wp/wp-content/themes/stump/single.php +1 -0
  683. data/lib/wp/wp-content/themes/stump/style.css +11 -0
  684. data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
  685. data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
  686. data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
  687. data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
  688. data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
  689. data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
  690. data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
  691. data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
  692. data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
  693. data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
  694. data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
  695. data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
  696. data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
  697. data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
  698. data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
  699. data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
  700. data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
  701. data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
  702. data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
  703. data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
  704. data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
  705. data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
  706. data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
  707. data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
  708. data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
  709. data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
  710. data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
  711. data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
  712. data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
  713. data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
  714. data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
  715. data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
  716. data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
  717. data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
  718. data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
  719. data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
  720. data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
  721. data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
  722. data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
  723. data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
  724. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
  725. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
  726. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
  727. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
  728. data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
  729. data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
  730. data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
  731. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
  732. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
  733. data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
  734. data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
  735. data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
  736. data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
  737. data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
  738. data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
  739. data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
  740. data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
  741. data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
  742. data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
  743. data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
  744. data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
  745. data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
  746. data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
  747. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
  748. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
  749. data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
  750. data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
  751. data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
  752. data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
  753. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
  754. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
  755. data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
  756. data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
  757. data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
  758. data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
  759. data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
  760. data/lib/wp/wp-cron.php +115 -0
  761. data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
  762. data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
  763. data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
  764. data/lib/wp/wp-includes/ID3/license.txt +29 -0
  765. data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
  766. data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
  767. data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
  768. data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
  769. data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
  770. data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
  771. data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
  772. data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
  773. data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
  774. data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
  775. data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
  776. data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
  777. data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
  778. data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
  779. data/lib/wp/wp-includes/ID3/readme.txt +604 -0
  780. data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
  781. data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
  782. data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
  783. data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
  784. data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
  785. data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
  786. data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
  787. data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
  788. data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
  789. data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
  790. data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
  791. data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
  792. data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
  793. data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
  794. data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
  795. data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
  796. data/lib/wp/wp-includes/SimplePie/File.php +292 -0
  797. data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
  798. data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
  799. data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
  800. data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
  801. data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
  802. data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
  803. data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
  804. data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
  805. data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
  806. data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
  807. data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
  808. data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
  809. data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
  810. data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
  811. data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
  812. data/lib/wp/wp-includes/Text/Diff.php +450 -0
  813. data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
  814. data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
  815. data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
  816. data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
  817. data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
  818. data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
  819. data/lib/wp/wp-includes/admin-bar.php +870 -0
  820. data/lib/wp/wp-includes/atomlib.php +352 -0
  821. data/lib/wp/wp-includes/author-template.php +471 -0
  822. data/lib/wp/wp-includes/bookmark-template.php +298 -0
  823. data/lib/wp/wp-includes/bookmark.php +416 -0
  824. data/lib/wp/wp-includes/cache.php +704 -0
  825. data/lib/wp/wp-includes/canonical.php +586 -0
  826. data/lib/wp/wp-includes/capabilities.php +1539 -0
  827. data/lib/wp/wp-includes/category-template.php +1407 -0
  828. data/lib/wp/wp-includes/category.php +343 -0
  829. data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
  830. data/lib/wp/wp-includes/class-IXR.php +1100 -0
  831. data/lib/wp/wp-includes/class-feed.php +140 -0
  832. data/lib/wp/wp-includes/class-http.php +2245 -0
  833. data/lib/wp/wp-includes/class-json.php +936 -0
  834. data/lib/wp/wp-includes/class-oembed.php +579 -0
  835. data/lib/wp/wp-includes/class-phpass.php +260 -0
  836. data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
  837. data/lib/wp/wp-includes/class-pop3.php +652 -0
  838. data/lib/wp/wp-includes/class-simplepie.php +3119 -0
  839. data/lib/wp/wp-includes/class-smtp.php +943 -0
  840. data/lib/wp/wp-includes/class-snoopy.php +1256 -0
  841. data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
  842. data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
  843. data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
  844. data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
  845. data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
  846. data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
  847. data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
  848. data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
  849. data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
  850. data/lib/wp/wp-includes/class-wp-embed.php +373 -0
  851. data/lib/wp/wp-includes/class-wp-error.php +276 -0
  852. data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
  853. data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
  854. data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
  855. data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
  856. data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
  857. data/lib/wp/wp-includes/class-wp-walker.php +471 -0
  858. data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
  859. data/lib/wp/wp-includes/class-wp.php +782 -0
  860. data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
  861. data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
  862. data/lib/wp/wp-includes/class.wp-styles.php +210 -0
  863. data/lib/wp/wp-includes/comment-template.php +2286 -0
  864. data/lib/wp/wp-includes/comment.php +2606 -0
  865. data/lib/wp/wp-includes/compat.php +125 -0
  866. data/lib/wp/wp-includes/cron.php +469 -0
  867. data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
  868. data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
  869. data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
  870. data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
  871. data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
  872. data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
  873. data/lib/wp/wp-includes/css/buttons.css +364 -0
  874. data/lib/wp/wp-includes/css/buttons.min.css +1 -0
  875. data/lib/wp/wp-includes/css/dashicons.css +893 -0
  876. data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
  877. data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
  878. data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
  879. data/lib/wp/wp-includes/css/editor.css +1993 -0
  880. data/lib/wp/wp-includes/css/editor.min.css +1 -0
  881. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
  882. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
  883. data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
  884. data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
  885. data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
  886. data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
  887. data/lib/wp/wp-includes/css/media-views.css +2568 -0
  888. data/lib/wp/wp-includes/css/media-views.min.css +1 -0
  889. data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
  890. data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
  891. data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
  892. data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
  893. data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
  894. data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
  895. data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
  896. data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
  897. data/lib/wp/wp-includes/date.php +475 -0
  898. data/lib/wp/wp-includes/default-constants.php +323 -0
  899. data/lib/wp/wp-includes/default-filters.php +307 -0
  900. data/lib/wp/wp-includes/default-widgets.php +1423 -0
  901. data/lib/wp/wp-includes/deprecated.php +3501 -0
  902. data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
  903. data/lib/wp/wp-includes/feed-atom.php +87 -0
  904. data/lib/wp/wp-includes/feed-rdf.php +81 -0
  905. data/lib/wp/wp-includes/feed-rss.php +46 -0
  906. data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
  907. data/lib/wp/wp-includes/feed-rss2.php +115 -0
  908. data/lib/wp/wp-includes/feed.php +659 -0
  909. data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
  910. data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
  911. data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
  912. data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
  913. data/lib/wp/wp-includes/formatting.php +4006 -0
  914. data/lib/wp/wp-includes/functions.php +4631 -0
  915. data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
  916. data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
  917. data/lib/wp/wp-includes/general-template.php +2982 -0
  918. data/lib/wp/wp-includes/http.php +551 -0
  919. data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
  920. data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
  921. data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
  922. data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
  923. data/lib/wp/wp-includes/images/blank.gif +0 -0
  924. data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
  925. data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
  926. data/lib/wp/wp-includes/images/crystal/code.png +0 -0
  927. data/lib/wp/wp-includes/images/crystal/default.png +0 -0
  928. data/lib/wp/wp-includes/images/crystal/document.png +0 -0
  929. data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
  930. data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
  931. data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
  932. data/lib/wp/wp-includes/images/crystal/text.png +0 -0
  933. data/lib/wp/wp-includes/images/crystal/video.png +0 -0
  934. data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
  935. data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
  936. data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
  937. data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
  938. data/lib/wp/wp-includes/images/media/archive.png +0 -0
  939. data/lib/wp/wp-includes/images/media/audio.png +0 -0
  940. data/lib/wp/wp-includes/images/media/code.png +0 -0
  941. data/lib/wp/wp-includes/images/media/default.png +0 -0
  942. data/lib/wp/wp-includes/images/media/document.png +0 -0
  943. data/lib/wp/wp-includes/images/media/interactive.png +0 -0
  944. data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
  945. data/lib/wp/wp-includes/images/media/text.png +0 -0
  946. data/lib/wp/wp-includes/images/media/video.png +0 -0
  947. data/lib/wp/wp-includes/images/rss-2x.png +0 -0
  948. data/lib/wp/wp-includes/images/rss.png +0 -0
  949. data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
  950. data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
  951. data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
  952. data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
  953. data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
  954. data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
  955. data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
  956. data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
  957. data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
  958. data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
  959. data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
  960. data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
  961. data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
  962. data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
  963. data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
  964. data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
  965. data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
  966. data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
  967. data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
  968. data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
  969. data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
  970. data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
  971. data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
  972. data/lib/wp/wp-includes/images/spinner.gif +0 -0
  973. data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
  974. data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
  975. data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
  976. data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
  977. data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
  978. data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
  979. data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
  980. data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
  981. data/lib/wp/wp-includes/images/wpicons.png +0 -0
  982. data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
  983. data/lib/wp/wp-includes/images/wpspin.gif +0 -0
  984. data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
  985. data/lib/wp/wp-includes/images/xit.gif +0 -0
  986. data/lib/wp/wp-includes/js/admin-bar.js +365 -0
  987. data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
  988. data/lib/wp/wp-includes/js/autosave.js +589 -0
  989. data/lib/wp/wp-includes/js/autosave.min.js +1 -0
  990. data/lib/wp/wp-includes/js/backbone.min.js +1 -0
  991. data/lib/wp/wp-includes/js/colorpicker.js +707 -0
  992. data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
  993. data/lib/wp/wp-includes/js/comment-reply.js +47 -0
  994. data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
  995. data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
  996. data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
  997. data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
  998. data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
  999. data/lib/wp/wp-includes/js/customize-base.js +617 -0
  1000. data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
  1001. data/lib/wp/wp-includes/js/customize-loader.js +246 -0
  1002. data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
  1003. data/lib/wp/wp-includes/js/customize-models.js +247 -0
  1004. data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
  1005. data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
  1006. data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
  1007. data/lib/wp/wp-includes/js/customize-preview.js +154 -0
  1008. data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
  1009. data/lib/wp/wp-includes/js/customize-views.js +231 -0
  1010. data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
  1011. data/lib/wp/wp-includes/js/heartbeat.js +738 -0
  1012. data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
  1013. data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
  1014. data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
  1015. data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
  1016. data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
  1017. data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
  1018. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
  1019. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
  1020. data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
  1021. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
  1022. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
  1023. data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
  1024. data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
  1025. data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
  1026. data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
  1027. data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
  1028. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
  1029. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
  1030. data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
  1031. data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
  1032. data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
  1033. data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
  1034. data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
  1035. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
  1036. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
  1037. data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
  1038. data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
  1039. data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
  1040. data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
  1041. data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
  1042. data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
  1043. data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
  1044. data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
  1045. data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
  1046. data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
  1047. data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
  1048. data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
  1049. data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
  1050. data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
  1051. data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
  1052. data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
  1053. data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
  1054. data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
  1055. data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
  1056. data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
  1057. data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
  1058. data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
  1059. data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
  1060. data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
  1061. data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
  1062. data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
  1063. data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
  1064. data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
  1065. data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
  1066. data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
  1067. data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
  1068. data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
  1069. data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
  1070. data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
  1071. data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
  1072. data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
  1073. data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
  1074. data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
  1075. data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
  1076. data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
  1077. data/lib/wp/wp-includes/js/json2.js +480 -0
  1078. data/lib/wp/wp-includes/js/json2.min.js +1 -0
  1079. data/lib/wp/wp-includes/js/masonry.min.js +1 -0
  1080. data/lib/wp/wp-includes/js/mce-view.js +829 -0
  1081. data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
  1082. data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
  1083. data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
  1084. data/lib/wp/wp-includes/js/media-editor.js +1114 -0
  1085. data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
  1086. data/lib/wp/wp-includes/js/media-grid.js +732 -0
  1087. data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
  1088. data/lib/wp/wp-includes/js/media-models.js +1362 -0
  1089. data/lib/wp/wp-includes/js/media-models.min.js +1 -0
  1090. data/lib/wp/wp-includes/js/media-views.js +7484 -0
  1091. data/lib/wp/wp-includes/js/media-views.min.js +3 -0
  1092. data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
  1093. data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
  1094. data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
  1095. data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
  1096. data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
  1097. data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
  1098. data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
  1099. data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
  1100. data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
  1101. data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
  1102. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
  1103. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
  1104. data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
  1105. data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
  1106. data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
  1107. data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
  1108. data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
  1109. data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
  1110. data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
  1111. data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
  1112. data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
  1113. data/lib/wp/wp-includes/js/quicktags.js +652 -0
  1114. data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
  1115. data/lib/wp/wp-includes/js/shortcode.js +356 -0
  1116. data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
  1117. data/lib/wp/wp-includes/js/swfobject.js +4 -0
  1118. data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
  1119. data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
  1120. data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
  1121. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
  1122. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
  1123. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
  1124. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
  1125. data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
  1126. data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
  1127. data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
  1128. data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
  1129. data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
  1130. data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
  1131. data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
  1132. data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
  1133. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
  1134. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
  1135. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
  1136. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  1137. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
  1138. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
  1139. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
  1140. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
  1141. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
  1142. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
  1143. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  1144. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
  1145. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
  1146. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
  1147. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
  1148. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
  1149. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
  1150. data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
  1151. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
  1152. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
  1153. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
  1154. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
  1155. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
  1156. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  1157. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
  1158. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
  1159. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
  1160. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
  1161. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
  1162. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
  1163. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
  1164. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
  1165. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
  1166. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
  1167. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
  1168. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
  1169. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
  1170. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
  1171. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
  1172. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
  1173. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
  1174. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
  1175. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
  1176. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
  1177. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
  1178. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  1179. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
  1180. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  1181. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  1182. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  1183. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
  1184. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  1185. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  1186. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
  1187. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
  1188. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
  1189. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
  1190. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  1191. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
  1192. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
  1193. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
  1194. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
  1195. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
  1196. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
  1197. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
  1198. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
  1199. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
  1200. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
  1201. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
  1202. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
  1203. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
  1204. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
  1205. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
  1206. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
  1207. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
  1208. data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
  1209. data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
  1210. data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
  1211. data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
  1212. data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
  1213. data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
  1214. data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
  1215. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
  1216. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
  1217. data/lib/wp/wp-includes/js/tw-sack.js +193 -0
  1218. data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
  1219. data/lib/wp/wp-includes/js/underscore.min.js +1 -0
  1220. data/lib/wp/wp-includes/js/utils.js +197 -0
  1221. data/lib/wp/wp-includes/js/utils.min.js +1 -0
  1222. data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
  1223. data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
  1224. data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
  1225. data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
  1226. data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
  1227. data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
  1228. data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
  1229. data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
  1230. data/lib/wp/wp-includes/js/wp-lists.js +469 -0
  1231. data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
  1232. data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
  1233. data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
  1234. data/lib/wp/wp-includes/js/wp-util.js +106 -0
  1235. data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
  1236. data/lib/wp/wp-includes/js/wpdialog.js +19 -0
  1237. data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
  1238. data/lib/wp/wp-includes/js/wplink.js +615 -0
  1239. data/lib/wp/wp-includes/js/wplink.min.js +1 -0
  1240. data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
  1241. data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
  1242. data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
  1243. data/lib/wp/wp-includes/kses.php +1526 -0
  1244. data/lib/wp/wp-includes/l10n.php +908 -0
  1245. data/lib/wp/wp-includes/link-template.php +3141 -0
  1246. data/lib/wp/wp-includes/load.php +828 -0
  1247. data/lib/wp/wp-includes/locale.php +368 -0
  1248. data/lib/wp/wp-includes/media-template.php +1235 -0
  1249. data/lib/wp/wp-includes/media.php +3329 -0
  1250. data/lib/wp/wp-includes/meta.php +1221 -0
  1251. data/lib/wp/wp-includes/ms-blogs.php +939 -0
  1252. data/lib/wp/wp-includes/ms-default-constants.php +153 -0
  1253. data/lib/wp/wp-includes/ms-default-filters.php +82 -0
  1254. data/lib/wp/wp-includes/ms-deprecated.php +347 -0
  1255. data/lib/wp/wp-includes/ms-files.php +82 -0
  1256. data/lib/wp/wp-includes/ms-functions.php +2476 -0
  1257. data/lib/wp/wp-includes/ms-load.php +458 -0
  1258. data/lib/wp/wp-includes/ms-settings.php +213 -0
  1259. data/lib/wp/wp-includes/nav-menu-template.php +678 -0
  1260. data/lib/wp/wp-includes/nav-menu.php +895 -0
  1261. data/lib/wp/wp-includes/option.php +1440 -0
  1262. data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
  1263. data/lib/wp/wp-includes/pluggable.php +2283 -0
  1264. data/lib/wp/wp-includes/plugin.php +920 -0
  1265. data/lib/wp/wp-includes/pomo/entry.php +78 -0
  1266. data/lib/wp/wp-includes/pomo/mo.php +262 -0
  1267. data/lib/wp/wp-includes/pomo/po.php +384 -0
  1268. data/lib/wp/wp-includes/pomo/streams.php +209 -0
  1269. data/lib/wp/wp-includes/pomo/translations.php +275 -0
  1270. data/lib/wp/wp-includes/post-formats.php +243 -0
  1271. data/lib/wp/wp-includes/post-template.php +1766 -0
  1272. data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
  1273. data/lib/wp/wp-includes/post.php +5842 -0
  1274. data/lib/wp/wp-includes/query.php +4666 -0
  1275. data/lib/wp/wp-includes/registration-functions.php +7 -0
  1276. data/lib/wp/wp-includes/registration.php +7 -0
  1277. data/lib/wp/wp-includes/revision.php +657 -0
  1278. data/lib/wp/wp-includes/rewrite.php +2180 -0
  1279. data/lib/wp/wp-includes/rss-functions.php +9 -0
  1280. data/lib/wp/wp-includes/rss.php +936 -0
  1281. data/lib/wp/wp-includes/script-loader.php +1045 -0
  1282. data/lib/wp/wp-includes/session.php +430 -0
  1283. data/lib/wp/wp-includes/shortcodes.php +410 -0
  1284. data/lib/wp/wp-includes/taxonomy.php +4006 -0
  1285. data/lib/wp/wp-includes/template-loader.php +76 -0
  1286. data/lib/wp/wp-includes/template.php +505 -0
  1287. data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
  1288. data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
  1289. data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
  1290. data/lib/wp/wp-includes/theme-compat/header.php +49 -0
  1291. data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
  1292. data/lib/wp/wp-includes/theme.php +2014 -0
  1293. data/lib/wp/wp-includes/update.php +674 -0
  1294. data/lib/wp/wp-includes/user.php +2292 -0
  1295. data/lib/wp/wp-includes/vars.php +144 -0
  1296. data/lib/wp/wp-includes/version.php +35 -0
  1297. data/lib/wp/wp-includes/widgets.php +1514 -0
  1298. data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
  1299. data/lib/wp/wp-includes/wp-db.php +2190 -0
  1300. data/lib/wp/wp-includes/wp-diff.php +523 -0
  1301. data/lib/wp/wp-links-opml.php +80 -0
  1302. data/lib/wp/wp-load.php +73 -0
  1303. data/lib/wp/wp-login.php +952 -0
  1304. data/lib/wp/wp-mail.php +260 -0
  1305. data/lib/wp/wp-settings.php +374 -0
  1306. data/lib/wp/wp-signup.php +749 -0
  1307. data/lib/wp/wp-trackback.php +127 -0
  1308. data/lib/wp/xmlrpc.php +101 -0
  1309. data/stump-cli.gemspec +26 -0
  1310. metadata +1332 -4
@@ -0,0 +1,250 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="dashiconsregular" horiz-adv-x="2000" >
7
+ <font-face units-per-em="2000" ascent="2000" descent="0" />
8
+ <missing-glyph horiz-adv-x="500" />
9
+ <glyph unicode="&#x2000;" horiz-adv-x="1000" />
10
+ <glyph unicode="&#x2001;" />
11
+ <glyph unicode="&#x2002;" horiz-adv-x="1000" />
12
+ <glyph unicode="&#x2003;" />
13
+ <glyph unicode="&#x2004;" horiz-adv-x="666" />
14
+ <glyph unicode="&#x2005;" horiz-adv-x="500" />
15
+ <glyph unicode="&#x2006;" horiz-adv-x="333" />
16
+ <glyph unicode="&#x2007;" horiz-adv-x="333" />
17
+ <glyph unicode="&#x2008;" horiz-adv-x="250" />
18
+ <glyph unicode="&#x2009;" horiz-adv-x="400" />
19
+ <glyph unicode="&#x200a;" horiz-adv-x="111" />
20
+ <glyph unicode="&#x202f;" horiz-adv-x="400" />
21
+ <glyph unicode="&#x205f;" horiz-adv-x="500" />
22
+ <glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
23
+ <glyph unicode="&#xf100;" d="M1448 894l-707 707l150 150q25 28 85 34.5t134 -11t132 -55.5q45 -30 126.5 -97t164.5 -113q43 -24 73 -38t76.5 -30.5t87.5 -23t95.5 -6t112.5 12.5zM1377 823l-707 707l-177 -177q-29 -29 -29 -70.5t29 -70.5l106 -106q29 -29 29 -71t-29 -71q-27 -27 -61.5 -54 t-86 -63t-73.5 -52q-66 -49 -101 -84q-52 -52 -92 -108.5t-64 -113t-20.5 -108.5t39.5 -88t88 -39.5t108.5 20.5t113 63.5t108.5 91.5q34 34 85 102q13 17 51 72t64 88.5t54 60.5q29 29 70.5 29t70.5 -29l106 -106q29 -29 70.5 -29t70.5 29z" />
24
+ <glyph unicode="&#xf101;" d="M500 1800h900q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-200l-500 -500v500h-200q-82 0 -141 59t-59 141v700q0 82 59 141t141 59z" />
25
+ <glyph unicode="&#xf102;" d="M1600 1150l153 -153l-106 -106l-647 647l-647 -647l-106 106l753 753l400 -400v200h200v-400zM1000 1396l600 -599v-597h-1200v597zM1200 300v500h-400v-500h400z" />
26
+ <glyph unicode="&#xf103;" d="M1774 1724q126 -127 126 -305t-126 -305l-153 -152q-82 -82 -195 -110.5t-219 1.5l262 261l76 77l76 76q63 63 63 152t-63 152q-63 64 -152 64t-152 -64l-77 -76l-338 -338q-29 106 -0.5 219t110.5 195l152 153q127 126 305.5 126t304.5 -126zM859 657l534 534 q31 31 31 76t-31 76q-34 32 -78 31t-75 -31l-533 -534q-31 -31 -31 -76t31 -76q34 -32 78 -31t74 31zM783 428l414 415q30 -106 1.5 -219t-110.5 -195l-152 -153q-127 -126 -305 -126t-305 126q-126 126 -126 305t126 305l153 152q82 82 195 110.5t219 -0.5l-414 -415 q-64 -63 -64 -152t64 -153q63 -63 152 -63t152 63z" />
27
+ <glyph unicode="&#xf104;" d="M1300 900v700q0 41 -29.5 70.5t-70.5 29.5h-167l-133 200h-400l-133 -200h-167q-41 0 -70.5 -29.5t-29.5 -70.5v-700q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5zM700 1550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z M1400 1400h500v-1050q0 -104 -73 -177t-177 -73t-177 73t-73 177t73 177t177 73q23 0 50 -5v505h-300v300zM1000 595v105h200v-350q0 -104 -73 -177t-177 -73t-177 73t-73 177t73 177t177 73q23 0 50 -5z" />
28
+ <glyph unicode="&#xf105;" d="M600 500v1300h1000v-1300h-1000zM500 400h800v-200h-1000v1300h200v-1100z" />
29
+ <glyph unicode="&#xf106;" d="M1311 1564l-324 -324l-187 187l324 324q26 26 72 16.5t84 -48.5q39 -38 48 -83.5t-17 -71.5zM511 1387l91 112l901 -901l-119 -84q-50 -50 -167.5 -83t-214.5 -33h-388l-124 -124q-44 -44 -106 -44t-106 44q-44 43 -44 105.5t44 106.5l124 124v388q0 96 30.5 218 t78.5 171zM1237 990l324 324q25 26 71 17t84 -48q39 -38 48 -83.5t-17 -71.5l-324 -325z" />
30
+ <glyph unicode="&#xf107;" d="M1668 1023q-99 -99 -236 -125t-259 26l-541 -652q-74 -74 -179 -74t-179 74t-74 179t74 178l652 542q-52 122 -26 259t125 236q94 94 224 122t248 -16l-289 -289l282 -282l286 287q41 -117 13 -244.5t-121 -220.5zM381 379q30 -29 72 -29t71 29q30 30 30 72t-30 71 q-29 30 -71 30t-72 -30q-29 -29 -29 -71t29 -72z" />
31
+ <glyph unicode="&#xf108;" d="M1800 400v1200q0 41 -29.5 70.5t-70.5 29.5h-1300q-41 0 -70.5 -29.5t-29.5 -70.5v-1200q0 -41 29.5 -70.5t70.5 -29.5h1300q41 0 70.5 29.5t29.5 70.5zM800 900h100q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5 t-35.5 14.5t-14.5 35.5v150h-100q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h100v550q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-550zM1300 1100h-100q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h100v150q0 21 14.5 35.5t35.5 14.5t35.5 -14.5 t14.5 -35.5v-150h100q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-550q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v550z" />
32
+ <glyph unicode="&#xf109;" d="M1044 1698l182 182l636 -635l-183 -182q-78 52 -175 42.5t-166 -78.5l-75 -75q-68 -69 -77.5 -165.5t42.5 -175.5l-183 -182l-241 241l-280 -279q-54 -54 -203.5 -155t-176.5 -74t74 177.5t154 203.5l279 279l-241 242l183 182q78 -52 175 -42.5t165 78.5l75 75 q69 68 78.5 165t-42.5 176z" />
33
+ <glyph unicode="&#xf110;" d="M1000 1075q-46 0 -86.5 19t-67.5 49.5t-49 67t-34.5 73t-21 67t-11.5 49.5l-3 19q-6 55 -3 108.5t24.5 103t53 87t82.5 60t113 22.5q103 0 171 -59t91 -144t9 -178q-1 -7 -3 -19.5t-10.5 -48t-20.5 -68t-33.5 -72.5t-48 -68.5t-66.5 -48t-86 -19.5zM1000 833l272 182 q116 0 221.5 -67t168 -172t62.5 -214v-249q-15 -5 -41.5 -12.5t-109 -27t-164.5 -34.5t-195 -27t-214 -12q-102 0 -214.5 11.5t-199.5 28t-159.5 33.5t-111.5 29l-39 11v249q0 112 58 215t162.5 168t226.5 65z" />
34
+ <glyph unicode="&#xf111;" d="M1800 800h-218q-26 -107 -81 -193l154 -154l-210 -210l-154 154q-88 -55 -191 -79v-218h-300v218q-103 24 -191 79l-154 -154l-212 212l154 154q-55 88 -79 191h-218v297h217q23 101 80 194l-154 154l210 210l154 -154q85 54 193 81v218h300v-218q103 -24 191 -79 l154 154l212 -212l-154 -154q57 -93 80 -194h217v-297zM950 650q124 0 212 88t88 212t-88 212t-212 88t-212 -88t-88 -212t88 -212t212 -88z" />
35
+ <glyph unicode="&#xf112;" d="M1695 1742q96 -96 130.5 -225t0 -257.5t-130.5 -224.5q-112 -112 -267.5 -138.5t-291.5 37.5l-187 -331l-299 -31l-150 -372h-300l-100 200l795 769q-71 139 -46.5 298.5t139.5 274.5q96 96 225 130.5t257.5 0t224.5 -130.5zM1444 1363q55 0 94 39t39 95q0 55 -39 94 t-94 39t-94 -39t-39 -94t39 -94.5t94 -39.5z" />
36
+ <glyph unicode="&#xf113;" d="M1000 1700q154 0 290.5 -63t234.5 -175l-171 -195q-62 82 -155 130t-199 48q-157 0 -277.5 -98t-154.5 -247h232l-350 -400l-350 400h208q24 168 121 305t247.5 216t323.5 79zM1000 296q-155 0 -291 63t-234 175l171 195q62 -82 155 -130t199 -48q157 0 277.5 98 t154.5 247h-232l350 400l350 -400h-208q-18 -126 -79.5 -236.5t-152.5 -190.5t-210.5 -126.5t-249.5 -46.5z" />
37
+ <glyph unicode="&#xf115;" d="M1800 600v1000q0 41 -29.5 70.5t-70.5 29.5h-1400q-41 0 -70.5 -29.5t-29.5 -70.5v-1000q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1000 1400q169 0 323 -79t277 -221q-123 -142 -277 -221t-323 -79t-323 79t-277 221q123 142 277 221t323 79z M1200 1100q0 82 -59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59t141 59t59 141zM1400 300h300v-100h-1400v100h300v100h800v-100z" />
38
+ <glyph unicode="&#xf116;" d="M1900 400v1300q0 41 -29.5 70.5t-70.5 29.5h-1500q-41 0 -70.5 -29.5t-29.5 -70.5v-1300q0 -41 29.5 -70.5t70.5 -29.5h1500q41 0 70.5 29.5t29.5 70.5zM400 1600h1300v-400h-1300v400zM500 1500v-200h300v200h-300zM900 1500v-200h300v200h-300zM1300 1500v-200h300v200 h-300zM450 1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM600 1000h400v-100h-400v100zM1200 1000h500v-500h-500v500zM450 800q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5 t14.5 35.5t35.5 14.5zM600 800h400v-100h-400v100zM1300 800v-200h300v200h-300zM450 600q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM600 600h400v-100h-400v100z" />
39
+ <glyph unicode="&#xf117;" d="M500 1800h1000q82 0 141 -59t59 -141v-800q0 -82 -59 -141t-141 -59h-200l-500 -500v500h-300q-82 0 -141 59t-59 141v800q0 82 59 141t141 59zM1350 950l-250 250l250 250l-100 100l-250 -250l-250 250l-100 -100l250 -250l-250 -250l100 -100l250 250l250 -250z" />
40
+ <glyph unicode="&#xf118;" d="M1000 1000l-746 298l46 -1098h-200l48 1141l-148 59l1000 400l1000 -400zM1000 1500q-41 0 -70.5 -14.5t-29.5 -35.5t29.5 -35.5t70.5 -14.5t70.5 14.5t29.5 35.5t-29.5 35.5t-70.5 14.5zM1000 900l557 223q112 -149 136 -330q-52 7 -93 7q-188 0 -347.5 -92.5 t-252.5 -248.5q-93 156 -252.5 248.5t-347.5 92.5q-40 0 -93 -7q24 181 136 330z" />
41
+ <glyph unicode="&#xf119;" d="M1689 1880l141 -141q29 -29 29 -70.5t-29 -70.5l-430 -431v-967h-1100v1500h1067l180 180q30 29 71.5 29.5t70.5 -29.5zM1123 1032l537 536l-142 142l-536 -537l-71 -212z" />
42
+ <glyph unicode="&#xf120;" d="M2000 1000q0 163 -50.5 315.5t-143 275.5t-215.5 215.5t-275.5 143t-315.5 50.5t-315.5 -50.5t-275.5 -143t-215.5 -215.5t-143 -275.5t-50.5 -315.5t50.5 -315.5t143 -275.5t215.5 -215.5t275.5 -143t315.5 -50.5t315.5 50.5t275.5 143t215.5 215.5t143 275.5 t50.5 315.5zM1000 1899q183 0 349.5 -71t287 -191.5t191.5 -287t71 -349.5t-71 -349.5t-191.5 -287t-287 -191.5t-349.5 -71t-349.5 71t-287 191.5t-191.5 287t-71 349.5t71 349.5t191.5 287t287 191.5t349.5 71zM801 518l-305 821l105 8q20 2 27 27.5t-2.5 49t-30.5 22.5 q-129 -10 -213 -10q-33 0 -52 1q110 166 287 263t383 97q154 0 293.5 -55t247.5 -154q-52 7 -98.5 -30.5t-46.5 -111.5q0 -29 11.5 -61.5t22.5 -52.5t37 -61q5 -8 8 -13q50 -87 50 -221q0 -60 -31.5 -172t-63.5 -194l-32 -82l-271 750q21 1 40 5t27 8l8 3q20 2 27.5 29.5 t-2.5 53.5t-30 25q-130 -11 -214 -11q-35 0 -87.5 3l-87.5 5l-36 3q-20 1 -30 -25.5t-2.5 -54t27.5 -28.5l84 -8l112 -304zM1403 303l261 697q3 7 7 19.5t15 53.5t15.5 82t8 105t-6.5 121q94 -170 94 -381q0 -219 -106.5 -405t-287.5 -292zM268 1323l382 -1048 q-202 99 -324.5 294.5t-122.5 430.5q0 179 65 323zM1013 870l229 -625q-117 -42 -242 -42q-103 0 -206 30z" />
43
+ <glyph unicode="&#xf121;" d="M300 1900h1400v-1800h-1400v1800zM1400 1500v100h-800v-100h800zM1400 1200v100h-800v-100h800zM1400 900v100h-800v-100h800zM1200 600v100h-600v-100h600z" />
44
+ <glyph unicode="&#xf122;" d="M854 726q0 130 -72 222q-50 63 -136.5 82t-159.5 3q-25 143 78 303.5t264 241.5l-163 228q-98 -47 -188.5 -114t-169.5 -157t-133.5 -192.5t-79.5 -227t-9 -252.5q26 -211 139.5 -337t283.5 -126q151 0 248 88q98 88 98 238zM1797 726q0 130 -72 222q-50 63 -136.5 82 t-159.5 3q-25 143 78 303.5t264 241.5l-163 228q-98 -47 -188.5 -114t-169.5 -157t-133.5 -192.5t-79.5 -227t-9 -252.5q26 -211 139.5 -337t283.5 -126q151 0 248 88q98 88 98 238z" />
45
+ <glyph unicode="&#xf123;" d="M100 1900h1800v-1200l-600 -600h-1200v1800zM400 1600v-100h1200v100h-1200zM400 1200v-100h1200v100h-1200zM1000 700v100h-600v-100h600zM1200 300l500 500h-500v-500z" />
46
+ <glyph unicode="&#xf125;" d="M1100 1400h-82q-81 0 -149.5 -71t-68.5 -145v-184l-300 -300v300h-200q-82 0 -141 59t-59 141v500q0 82 59 141t141 59h600q82 0 141 -59t59 -141v-300zM1100 1300h600q82 0 141 -59t59 -141v-500q0 -82 -59 -141t-141 -59h-200v-300l-300 300h-100q-82 0 -141 59 t-59 141v500q0 82 59 141t141 59z" />
47
+ <glyph unicode="&#xf126;" d="M200 1900h1600q41 0 70.5 -29.5t29.5 -70.5v-1600l-1800 2v1598q0 41 29.5 70.5t70.5 29.5zM600 1800l-200 -300h100l200 300h-100zM1000 1800h-100l-200 -300h100zM1300 1800h-100l-200 -300h100zM1600 1800h-100l-200 -300h100zM1700 400v1000h-1400v-1000h1400z M800 1300l600 -400l-600 -400v800z" />
48
+ <glyph unicode="&#xf127;" d="M699 1692l1102 200q40 6 69.5 -25.5t29.5 -74.5v-200v-1042q0 -145 -102.5 -247.5t-247.5 -102.5t-247.5 102.5t-102.5 247.5t102.5 247.5t247.5 102.5q73 0 150 -35v627l-900 -200v-892q-18 -128 -118 -214t-232 -86q-145 0 -247.5 102.5t-102.5 247.5t102.5 247.5 t247.5 102.5q73 0 150 -35v827q0 40 28 66.5t71 33.5z" />
49
+ <glyph unicode="&#xf128;" d="M225 1900h1550q52 0 88.5 -36.5t36.5 -88.5v-1550q0 -52 -36.5 -88.5t-88.5 -36.5h-1550q-52 0 -88.5 36.5t-36.5 88.5v1550q0 52 36.5 88.5t88.5 36.5zM1700 300v1400h-1400v-1400h1400zM1000 1400q0 82 -59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59t141 59 t59 141zM1300 900q0 8 0.5 21t3 54t7.5 81t15.5 94t25 100.5t37.5 93.5t52 80.5t70 54.5t89 21v-1000q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v700q41 0 79.5 -22t67.5 -57.5t55 -78t43.5 -85t30 -78t18.5 -57.5l6 -22q4 12 12 32.5t36 72t60 91 t84 72t108 32.5t107.5 -20.5t85 -50t59 -59t36.5 -50.5z" />
50
+ <glyph unicode="&#xf129;" d="M1500 1600h294q44 0 75 -31t31 -75v-1181q0 -45 -31 -79t-75 -34h-1588q-44 0 -75 34t-31 79v1181q0 44 31 75t75 31h294l300 200h400zM1000 500q166 0 283 117t117 283t-117 283t-283 117t-283 -117t-117 -283t117 -283t283 -117z" />
51
+ <glyph unicode="&#xf130;" d="M1000 1900q205 0 362 -33.5t257.5 -91t164.5 -142t90 -177.5t26 -206t-26 -206t-90 -177.5t-164.5 -142t-257.5 -91t-362 -33.5t-362 33.5t-257.5 91t-164.5 142t-90 177.5t-26 206t26 206t90 177.5t164.5 142t257.5 91t362 33.5zM550 1100q62 0 106 44t44 106t-44 106 t-106 44t-106 -44t-44 -106t44 -106t106 -44zM1000 1100q62 0 106 44t44 106t-44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44zM1450 1100q62 0 106 44t44 106t-44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44zM600 550q62 0 106 -44t44 -106t-44 -106t-106 -44 t-106 44t-44 106t44 106t106 44zM300 350q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
52
+ <glyph unicode="&#xf132;" d="M1700 1300v-300h-500v-500h-300v500h-500v300h500v500h300v-500h500z" />
53
+ <glyph unicode="&#xf133;" d="M1700 1300v300h-200v200h-300v-100h-900v-1500h1100v900h100v200h200zM1600 1500v-100h-200v-200h-100v200h-200v100h200v200h100v-200h200z" />
54
+ <glyph unicode="&#xf134;" d="M0 1700h2000v-1400h-2000v1400zM1900 1300v200h-1800v-200h1800zM1500 800v400h-1000v-400h1000zM400 900v200h-300v-200h300zM1900 900v200h-300v-200h300zM1900 500v200h-1800v-200h1800z" />
55
+ <glyph unicode="&#xf135;" d="M0 1680h2000v-1400h-2000v1400zM1900 1280v200h-1800v-200h1800zM1100 780v400h-1000v-400h1000zM1900 880v200h-700v-200h700zM1900 480v200h-1800v-200h1800z" />
56
+ <glyph unicode="&#xf136;" d="M0 1680h2000v-1400h-2000v1400zM1900 1280v200h-1800v-200h1800zM1900 780v400h-1000v-400h1000zM800 880v200h-700v-200h700zM1900 480v200h-1800v-200h1800z" />
57
+ <glyph unicode="&#xf138;" d="M0 1680h2000v-1400h-2000v1400zM1500 780v400h-1000v-400h1000z" />
58
+ <glyph unicode="&#xf139;" d="M800 1400l600 -403l-600 -397v800z" />
59
+ <glyph unicode="&#xf140;" d="M1500 1200l-403 -600l-397 600h800z" />
60
+ <glyph unicode="&#xf141;" d="M1300 600l-600 403l600 397v-800z" />
61
+ <glyph unicode="&#xf142;" d="M700 700l403 600l397 -600h-800z" />
62
+ <glyph unicode="&#xf143;" d="M700 700l403 600l397 -600h-800z" />
63
+ <glyph unicode="&#xf145;" d="M1500 1600h300v-1400h-1600v1400h300v100q0 62 44 106t106 44t106 -44t44 -106v-100h400v100q0 62 44 106t106 44t106 -44t44 -106v-100zM600 1700v-250q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v250q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5z M1300 1700v-250q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v250q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5zM1700 300v900h-1400v-900h1400zM700 400v700h-200v-700h200zM1100 400v700h-200v-700h200zM1500 400v700h-200v-700h200z" />
64
+ <glyph unicode="&#xf147;" d="M1439 1450l134 -94l-537 -745h-134l-302 401l134 125l235 -187z" />
65
+ <glyph unicode="&#xf148;" d="M1000 1784q160 0 305 -62t250 -167t167 -250t62 -305t-62 -305t-167 -250t-250 -167t-305 -62t-305 62t-250 167t-167 250t-62 305q0 213 106 393.5t286.5 285.5t391.5 105zM1200 612v776l-582 -385z" />
66
+ <glyph unicode="&#xf153;" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1500 700l-300 300l300 300l-200 200l-300 -300l-300 300l-200 -200 l300 -300l-300 -300l200 -200l300 300l300 -300z" />
67
+ <glyph unicode="&#xf154;" d="M1000 1900l-300 -600l-600 -75l413 -462l-113 -663l600 300l600 -300l-112 663l412 462l-600 75zM1000 1676l234 -469l465 -58l-318 -356l87 -515l-468 234l-468 -234l87 515l-318 356l465 58z" />
68
+ <glyph unicode="&#xf155;" d="M1000 1900l300 -600l600 -75l-412 -462l112 -663l-600 300l-600 -300l113 663l-413 462l600 75z" />
69
+ <glyph unicode="&#xf156;" d="M1100 1300h-1000l500 -700zM900 600h1000l-500 700z" />
70
+ <glyph unicode="&#xf157;" d="M1476 1900q134 0 229 -95.5t95 -229.5t-95 -229t-229 -95q-33 0 -70 8l-106 -106v-1053h-1100v1500h954q9 145 99 222.5t223 77.5zM1476 1351q93 0 158.5 66t65.5 158q0 93 -65.5 159t-158.5 66t-158.5 -66t-65.5 -159q0 -54 27 -103l-322 -322q-35 -35 -101.5 -133 t-48.5 -116q3 -4 10 -4q32 0 120.5 61.5t118.5 91.5l324 324q48 -23 96 -23z" />
71
+ <glyph unicode="&#xf158;" d="M1555 630l-219 -206l-342 365l-364 -343l-206 218l364 343l-342 364l218 206l343 -364l364 342l205 -218l-364 -343z" />
72
+ <glyph unicode="&#xf159;" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1000 500q136 0 251 67t182 182t67 251t-67 251t-182 182t-251 67 t-251 -67t-182 -182t-67 -251t67 -251t182 -182t251 -67z" />
73
+ <glyph unicode="&#xf160;" d="M1400 1100h100q41 0 70.5 -29.5t29.5 -70.5v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v700q0 41 29.5 70.5t70.5 29.5h100v300q0 166 117 283t283 117t283 -117t117 -283v-300zM1200 1100v300q0 82 -59 141t-141 59t-141 -59t-59 -141v-300 h400zM1100 400l-36 215q39 18 62.5 54.5t23.5 80.5q0 62 -44 106t-106 44t-106 -44t-44 -106q0 -44 23.5 -80.5t62.5 -54.5l-36 -215h200z" />
74
+ <glyph unicode="&#xf161;" d="M1600 1600h196q43 0 73.5 -30.5t30.5 -73.5v-1292q0 -43 -30.5 -73.5t-73.5 -30.5h-1292q-43 0 -73.5 30.5t-30.5 73.5v196h-196q-43 0 -73.5 30.5t-30.5 73.5v1292q0 43 30.5 73.5t73.5 30.5h1292q43 0 73.5 -30.5t30.5 -73.5v-196zM300 600h1100v1100h-1100v-1100z M800 1450q0 62 -44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44t106 44t44 106zM1000 1000q2 10 6 28t18.5 70t30.5 99.5t43 105t55.5 99t67 70t79.5 28.5v-800h-900v600q56 0 97 -31t60 -75t30 -88t12 -75l1 -31q1 4 2.5 11.5t8 28t15.5 39.5t25.5 42t36 39.5t49 28 t63.5 11.5q47 0 84.5 -20.5t58 -50t34.5 -59t19 -50.5zM1700 300v1100h-100v-896q0 -43 -30.5 -73.5t-73.5 -30.5h-896v-100h1100z" />
75
+ <glyph unicode="&#xf163;" d="M200 100h1600q41 0 70.5 29.5t29.5 70.5v1600q0 41 -29.5 70.5t-70.5 29.5h-1600q-41 0 -70.5 -29.5t-29.5 -70.5v-1600q0 -41 29.5 -70.5t70.5 -29.5zM400 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1700 1700v-200h-1100v200h1100zM400 1300q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 1300v-200h-1100v200h1100zM400 900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5 t29.5 70.5t70.5 29.5zM1700 900v-200h-1100v200h1100zM400 500q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 500v-200h-1100v200h1100z" />
76
+ <glyph unicode="&#xf164;" d="M1900 200v1600q0 41 -29.5 70.5t-70.5 29.5h-1600q-41 0 -70.5 -29.5t-29.5 -70.5v-1600q0 -41 29.5 -70.5t70.5 -29.5h1600q41 0 70.5 29.5t29.5 70.5zM400 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1700 1700v-600h-1100v600h1100zM400 900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 900v-600h-1100v600h1100z" />
77
+ <glyph unicode="&#xf165;" d="M1900 800v-300h-400v-400h-300v400h-800v800h-400v300h400v400h300v-400h700l300 300l100 -100l-300 -300v-700h400zM1100 1300h-400v-400zM800 800h400v400z" />
78
+ <glyph unicode="&#xf166;" d="M700 1500h-195q0 137 71.5 213.5t223.5 76.5v210q-232 0 -368 -139.5t-136 -360.5h-178l262 -339zM2000 1900v-1400h-500v-500h-1400v1000h900v900h1000zM1800 1700h-600v-700h300v-300h300v1000zM1300 800h-1000v-600h1000v600z" />
79
+ <glyph unicode="&#xf167;" d="M1595 1500h-195l320 -339l262 339h-178q0 221 -136 360.5t-368 139.5v-210q152 0 223.5 -76.5t71.5 -213.5zM100 1900h1000v-900h900v-1000h-1400v500h-500v1400zM300 1700v-1000h300v300h300v700h-600zM800 800v-600h1000v600h-1000z" />
80
+ <glyph unicode="&#xf168;" d="M2000 1100v-200h-300v-800h-1400v800h-300v200h300v800h1400v-800h300zM650 1300h700l-350 400zM1700 1050h-1400v-100h1400v100zM1350 700h-700l350 -400z" />
81
+ <glyph unicode="&#xf169;" d="M1900 1700v-1400h-800v-300h-200v300h-800v1400h800v300h200v-300h800zM1050 300v1400h-100v-1400h100zM700 1350l-400 -350l400 -350v700zM1700 1000l-400 350v-700z" />
82
+ <glyph unicode="&#xf171;" d="M1723 990q79 -186 79 -390t-79 -390l-278 117q55 132 55 273q0 142 -55 272q-52 125 -150 223q-97 97 -222 150q-132 55 -273 55v-300l-600 450l600 450v-298q204 0 390 -79q182 -77 318 -215q138 -136 215 -318z" />
83
+ <glyph unicode="&#xf172;" d="M277 990q77 182 215 318q136 138 318 215q186 79 390 79v298l600 -450l-600 -450v300q-141 0 -273 -55q-124 -53 -222 -150q-98 -98 -150 -223q-55 -130 -55 -272q0 -141 55 -273l-278 -117q-79 186 -79 390t79 390z" />
84
+ <glyph unicode="&#xf173;" d="M1400 1400q0 -138 -84.5 -245t-215.5 -141v-614q0 -44 -50 -94t-100 -78l-50 -28v814q-131 34 -215.5 141t-84.5 245q0 166 117 283t283 117t283 -117t117 -283zM800 1500q0 -41 29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5t-70.5 -29.5 t-29.5 -70.5z" />
85
+ <glyph unicode="&#xf174;" d="M600 700h900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v1000h-200q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-200h1300l-400 -700h-900v-100zM550 400q62 0 106 -44t44 -106 t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1450 400q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
86
+ <glyph unicode="&#xf175;" d="M200 1800h1600q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-1600q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1700 400v900h-1400v-900h1400zM400 1200v-100h300v100h-300zM800 1200v-300h800v300h-800zM400 800v-100h300v100 h-300zM800 800v-300h800v300h-800z" />
87
+ <glyph unicode="&#xf176;" d="M1485 997q133 -14 224 -113t91 -234q0 -145 -102.5 -247.5t-247.5 -102.5h-1000q-145 0 -247.5 102.5t-102.5 247.5q0 133 88 231t218 115q-6 26 -6 54q0 104 73 177t177 73q49 0 95 -19q50 99 145.5 159t209.5 60q166 0 283 -117t117 -283q0 -48 -15 -103z" />
88
+ <glyph unicode="&#xf177;" d="M1000 1491q294 0 536 -151t364 -399q-122 -248 -364 -399t-536 -151t-536 151t-364 399q122 248 364 399t536 151zM1235 1181q0 44 -26 78t-66 46q-17 2 -49 4q-49 -4 -83 -40.5t-34 -87.5q0 -53 38 -91t91 -38q54 0 91.5 38t37.5 91zM1000 511q244 0 449.5 121 t310.5 309q-69 123 -189 208.5t-276 126.5q109 -117 109 -276q0 -167 -118.5 -285.5t-285.5 -118.5t-285.5 118.5t-118.5 285.5q0 159 109 276q-156 -41 -276 -126.5t-189 -208.5q105 -188 310.5 -309t449.5 -121z" />
89
+ <glyph unicode="&#xf178;" d="M1800 300v1400q0 41 -29.5 70.5t-70.5 29.5h-1400q-41 0 -70.5 -29.5t-29.5 -70.5v-1400q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1700 300h-1400v1400h1400v-1400zM475 1600h1050q31 0 53 -22t22 -53v-125h-100v-300h100v-200h-100v-300h100v-125 q0 -31 -22 -53t-53 -22h-1050q-31 0 -53 22t-22 53v1050q0 31 22 53t53 22zM1300 1000q0 166 -117 283t-283 117t-283 -117t-117 -283t117 -283t283 -117t283 117t117 283zM900 1300l77 -115q55 -24 89 -74t34 -111q0 -82 -59 -141t-141 -59t-141 59t-59 141q0 61 34 111 t89 74z" />
90
+ <glyph unicode="&#xf179;" d="M1214 1582q139 -139 158 -334.5t-86 -354.5q3 -3 15.5 -14t20.5 -17q34 -27 81 -59q62 -43 66 -47q61 -45 94 -78q49 -49 84 -100q36 -50 59 -104q22 -55 18 -100q-3 -48 -36 -81t-81 -36q-49 -3 -99 19q-52 21 -104 59q-51 35 -100 84q-33 33 -77 93q-2 3 -47 66 q-32 46 -56 78q-24 30 -44 50q-154 -83 -334 -57t-310 155q-160 161 -160 389.5t160 388.5q106 106 247.5 143.5t283 0t247.5 -143.5zM1073 946q102 103 102 247.5t-102 247.5q-103 103 -248 103t-247 -103q-103 -103 -103 -247.5t103 -247.5q102 -103 247 -103t248 103z " />
91
+ <glyph unicode="&#xf180;" d="M900 1100v600h-600v-600h600zM1700 1100v600h-600v-600h600zM900 300v600h-600v-600h600zM1700 300v600h-600v-600h600z" />
92
+ <glyph unicode="&#xf181;" d="M500 600v800h1000v-800h-1000zM200 700v600h200v-600h-200zM600 1300v-600h800v600h-800zM1600 1300h200v-600h-200v600zM1300 1100v100h-600v-100h600zM1300 800v200h-600v-200h600z" />
93
+ <glyph unicode="&#xf182;" d="M1200 1600h300q41 0 70.5 -29.5t29.5 -70.5v-100h-1300v100q0 41 29.5 70.5t70.5 29.5h300q17 86 88.5 143t161.5 57t161.5 -57t88.5 -143zM800 1600h300q-16 43 -58.5 71.5t-91.5 28.5t-91.5 -28.5t-58.5 -71.5zM400 1300h1100v-1000q0 -41 -29.5 -70.5t-70.5 -29.5 h-900q-41 0 -70.5 29.5t-29.5 70.5v1000zM700 400v700h-100v-700h100zM1000 400v700h-100v-700h100zM1300 400v700h-100v-700h100z" />
94
+ <glyph unicode="&#xf183;" d="M1800 200v1600h-1600v-1600h1600zM1600 1500h-1200v100h1200v-100zM700 1300v-300h300q0 -124 -88 -212t-212 -88t-212 88t-88 212t88 212t212 88zM800 1100v200q82 0 141 -59t59 -141h-200zM1600 1200h-400v100h400v-100zM1600 900h-400v200h400v-200zM1600 700h-400 v100h400v-100zM1600 400h-1200v100h1200v-100z" />
95
+ <glyph unicode="&#xf184;" d="M1000 1000v700q143 0 272.5 -55.5t223 -149t149 -223t55.5 -272.5h-700zM900 1600v-700h700q0 -143 -55.5 -272.5t-149 -223t-223 -149t-272.5 -55.5t-272.5 55.5t-223 149t-149 223t-55.5 272.5t55.5 272.5t149 223t223 149t272.5 55.5z" />
96
+ <glyph unicode="&#xf185;" d="M1800 200v1600h-400v-1600h400zM1200 200v1100h-400v-1100h400zM600 200v800h-400v-800h400z" />
97
+ <glyph unicode="&#xf200;" d="M600 1600v-1300h454q207 0 326 100q120 99 120 277q0 126 -51 201q-52 76 -167 103v9q85 15 136 90t51 191q0 172 -117 250q-115 79 -374 79h-378zM857 1085v289h136q109 0 161 -32q51 -33 51 -107q0 -80 -47 -115t-151 -35h-150zM857 866h160q216 0 216 -161 q0 -91 -51 -134q-50 -43 -157 -43h-168v338z" />
98
+ <glyph unicode="&#xf201;" d="M1478 1400h-213l-280 -900h212l-62 -200h-675l62 200h214l280 900h-213l62 200h675z" />
99
+ <glyph unicode="&#xf203;" d="M550 1300q-62 0 -106 44t-44 106t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 1500h900v-100h-900v100zM550 800q-62 0 -106 44t-44 106t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 1000h900v-100h-900v100zM550 300q-62 0 -106 44t-44 106 t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 500h900v-100h-900v100z" />
100
+ <glyph unicode="&#xf204;" d="M600 1300v400h-69l-129 -103l40 -51l46 37q12 10 30 28l-2 -42v-269h84zM800 1500h900v-100h-900v100zM677 805v70h-172v4l51 48q56 52 70 71q21 26 30 49q10 23 10 51q0 33 -16 56q-14 23 -44 37t-65 14q-29 0 -51 -6q-17 -3 -42 -15q-21 -12 -48 -35l45 -54 q24 19 45 30q21 10 45 10q23 0 35 -11q13 -12 13 -36q0 -15 -6 -30q-7 -16 -19 -33q-11 -13 -58 -62l-99 -100v-58h276zM800 1000h900v-100h-900v100zM671 605q0 46 -37 71q-37 26 -100 26q-78 0 -133 -40l40 -60q27 18 46 23q20 7 41 7q58 0 58 -46q0 -31 -22 -43t-70 -12 h-31v-66h31q51 0 75 -12q23 -12 23 -41q0 -32 -20 -47q-21 -15 -63 -15q-27 0 -57 8q-25 7 -52 20v-74q50 -22 118 -22q80 0 122 33q43 33 43 92q0 40 -26 64q-25 24 -74 30v2q40 9 65 37q23 28 23 65zM800 500h900v-100h-900v100z" />
101
+ <glyph unicode="&#xf205;" d="M949 678q0 113 -61 190q-43 53 -117 69.5t-136 2.5q-21 122 66.5 259t225.5 206l-139 195q-106 -51 -199.5 -129t-167.5 -179.5t-110 -231t-19 -265.5q22 -180 119.5 -287.5t242.5 -107.5q128 0 212 75q83 74 83 203zM1754 678q0 113 -61 190q-43 54 -117 70t-136 2 q-21 122 66.5 259t225.5 206l-139 195q-106 -51 -199.5 -129t-167 -179.5t-109.5 -231t-19 -265.5q22 -180 119 -287.5t242 -107.5q128 0 212 75q83 74 83 203z" />
102
+ <glyph unicode="&#xf206;" d="M1200 1500v200h-900v-200h900zM1700 1100v200h-1400v-200h1400zM1200 700v200h-900v-200h900zM1700 300v200h-1400v-200h1400z" />
103
+ <glyph unicode="&#xf207;" d="M1400 1500v200h-800v-200h800zM1700 1100v200h-1400v-200h1400zM1400 700v200h-800v-200h800zM1700 300v200h-1400v-200h1400z" />
104
+ <glyph unicode="&#xf208;" d="M1700 1500v200h-900v-200h900zM1700 1100v200h-1400v-200h1400zM1700 700v200h-900v-200h900zM1700 300v200h-1400v-200h1400z" />
105
+ <glyph unicode="&#xf209;" d="M1700 1300v400h-1400v-400h1400zM600 900v200h-300v-200h300zM1200 900v200h-400v-200h400zM1700 900v200h-300v-200h300zM1700 300v400h-1400v-400h1400z" />
106
+ <glyph unicode="&#xf210;" d="M1584 1724q36 0 71 -11q26 -8 64 -25l35 81q-78 39 -169 39q-86 0 -152 -37q-65 -37 -99 -108q-34 -68 -34 -163q0 -149 70 -228t202 -79q88 0 160 26v84q-32 -10 -74 -19q-38 -8 -74 -8q-89 0 -134 57q-47 54 -47 166q0 105 48 165q49 60 133 60zM650 1200h104l-224 600 h-106l-224 -600h103l58 166h229zM800 1800v-600h217q101 0 157 46q56 44 56 126q0 60 -30 95q-28 35 -93 47v4q50 9 78 44q28 37 28 88q0 78 -56 114q-54 36 -179 36h-178zM898 1552v166h85q68 0 97 -19q31 -18 31 -61q0 -46 -29 -66q-28 -20 -89 -20h-95zM564 1450h-174 l54 156q23 65 32 110l15 -52q8 -26 17 -51zM898 1473h99q64 0 98 -23q32 -23 32 -69q0 -51 -32 -75q-31 -24 -93 -24h-104v191zM400 700l500 -500l900 800l-100 100l-800 -600l-400 300z" />
107
+ <glyph unicode="&#xf211;" d="M600 1700l-125 -125l225 -375l-375 225l-125 -125v400h400zM1400 1700h400v-400l-125 125l-375 -225l225 375zM700 800v400h600v-400h-600zM200 700l125 -125l375 225l-225 -375l125 -125h-400v400zM1400 300l125 125l-225 375l375 -225l125 125v-400h-400z" />
108
+ <glyph unicode="&#xf212;" d="M1900 1800v-600h-1800v600h1800zM1800 1300v400h-1600v-400h1600zM500 1600v-200h-200v200h200zM800 1600v-200h-200v200h200zM1100 1600v-200h-200v200h200zM1400 1600v-200h-200v200h200zM1700 1600v-200h-200v200h200zM1900 1100v-900h-1800v900h1800zM1800 300v700 h-1600v-700h1600zM500 900v-200h-200v200h200zM800 900v-200h-200v200h200zM1100 900v-200h-200v200h200zM1700 900v-200h-500v200h500zM1100 600v-200h-800v200h800zM1400 600v-200h-200v200h200zM1700 600v-200h-200v200h200z" />
109
+ <glyph unicode="&#xf213;" d="M1400 1500h-200v-571q0 -143 -70 -220.5t-175 -77.5q-106 0 -180.5 78t-74.5 218v573h-200v-587q0 -61 12.5 -120.5t45 -121t82 -108t129 -75.5t179.5 -29t180.5 28.5t130 74t82.5 106.5t46 120.5t13 120.5v591zM1400 200v200h-900v-200h900z" />
110
+ <glyph unicode="&#xf214;" d="M200 1700h1600v-200h-1600v200zM200 1300h1600v-200h-1600v200zM200 900h1600v-200h-1600v200zM200 500h1600v-200h-1600v200z" />
111
+ <glyph unicode="&#xf215;" d="M1323 500h190l-413 1100h-200l-400 -1100h188l107 300h418zM1170 954h-319l149 486z" />
112
+ <glyph unicode="&#xf216;" d="M1238 1800l262 -300v-100h-1000v100l264 300h474zM1000 1500q41 0 70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM1800 300v1200q0 41 -29.5 70.5t-70.5 29.5h-154l54 -63v-237h-1200v238l55 62h-155q-41 0 -70.5 -29.5 t-29.5 -70.5v-1200q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1500 1100l-200 -700h-200l-100 500l-100 -500h-208l-192 700h200l100 -500l100 500h200l100 -500l100 500h200z" />
113
+ <glyph unicode="&#xf217;" d="M1238 1800l262 -300v-100h-1000v100l264 300h474zM1000 1500q41 0 70.5 29t29.5 71q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5q0 -42 29.5 -71t70.5 -29zM1545 1600h155q41 0 70.5 -29.5t29.5 -70.5v-1200q0 -42 -29.5 -71t-70.5 -29h-1400q-41 0 -70.5 29 t-29.5 71v1200q0 41 29.5 70.5t70.5 29.5h155l-55 -63v-237h1200v237zM1400 900v200h-800v-200h300v-500h200v500h300z" />
114
+ <glyph unicode="&#xf218;" d="M1429 1541l110 -111q61 -60 61 -147v-212q0 -87 -61 -147l-663 -663q-60 -61 -147 -61t-147 61l-111 110l-110 111q-61 60 -61 147v212q0 87 61 148l663 662q60 61 147 61q86 0 147 -61zM808 571l642 642q29 29 29 71t-29 72l-214 214q-29 29 -72 29q-42 0 -71 -29 l-642 -642q-29 -30 -29 -72t29 -71l214 -214q29 -29 71.5 -29t71.5 29z" />
115
+ <glyph unicode="&#xf219;" d="M1600 1800h-300v-100h-600v100h-300v-1500h300v100h600v-100h300v1500zM600 1700v-100h-100v100h100zM1500 1700v-100h-100v100h100zM1300 1600v-500h-600v500h600zM600 1500v-100h-100v100h100zM1500 1500v-100h-100v100h100zM600 1300v-100h-100v100h100zM1500 1300 v-100h-100v100h100zM600 1100v-100h-100v100h100zM1500 1100v-100h-100v100h100zM1300 1000v-500h-600v500h600zM600 900v-100h-100v100h100zM1500 900v-100h-100v100h100zM600 700v-100h-100v100h100zM1500 700v-100h-100v100h100zM600 500v-100h-100v100h100zM1500 500 v-100h-100v100h100z" />
116
+ <glyph unicode="&#xf220;" d="M1000 1460q190 0 291 -108q100 -108 100 -313q0 -192 -69 -327q-33 -62 -87.5 -111.5t-134.5 -100.5v-200h600v200h-369q146 101 212 234q74 153 74 335q0 267 -165 422q-166 155 -452 155q-287 0 -452 -157q-165 -156 -165 -420q0 -181 73 -333q62 -130 210 -236h-366 v-200h600v200q-84 55 -139 105t-85 112q-67 133 -67 322q0 206 100 313q99 108 291 108z" />
117
+ <glyph unicode="&#xf221;" d="M700 1600v100h-400v-100h400zM1700 1500v200h-900v-200h900zM700 1300h-200v200l-400 -350l400 -350v200h200v300zM1700 1200v200h-900v-200h900zM1500 900v200h-700v-200h700zM1700 600v200h-900v-200h900zM700 600v100h-400v-100h400zM1100 300v200h-300v-200h300z" />
118
+ <glyph unicode="&#xf222;" d="M300 1500v200h900v-200h-900zM1300 1600v100h400v-100h-400zM1300 1300h200v200l400 -350l-400 -350v200h-200v300zM300 1200v200h900v-200h-900zM500 900v200h700v-200h-700zM300 600v200h900v-200h-900zM1300 600v100h400v-100h-400zM900 300v200h300v-200h-300z" />
119
+ <glyph unicode="&#xf223;" d="M1700 1000q0 190 -94 351.5t-255 255t-351 93.5q-143 0 -272.5 -55.5t-223 -149t-149 -223t-55.5 -272.5t55.5 -272.5t149 -223t223 -149t272.5 -55.5q190 0 351 93.5t255 255t94 351.5zM1070 852h-156v43q0 56 24 98q22 39 88 89q61 43 81 71q20 26 20 62q0 37 -28 58 q-28 19 -79 19q-88 0 -200 -57l-64 128q131 74 277 74q120 0 192 -58q71 -58 71 -155q0 -66 -29 -111q-27 -45 -111 -106q-55 -40 -71 -63q-15 -22 -15 -57v-35zM923 578q-27 26 -27 73q0 50 26 75t77 25q47 0 75 -26q27 -26 27 -74q0 -47 -27 -72q-27 -27 -75 -27t-76 26z " />
120
+ <glyph unicode="&#xf224;" d="M1582 775q40 0 74 7q33 7 73 20v-84q-70 -26 -158 -26q-131 0 -201 79q-59 67 -68 179h-94q18 -32 18 -79q0 -80 -55 -126q-57 -45 -156 -45h-215v250h-141l93 -250h-103l-59 167h-228l-58 -167h-104l93 250h-93v100h131l93 249h106l92 -249h178v250h177q115 0 177 -41 q55 -36 55 -113q0 -52 -27 -87l-8 -9h129q8 62 31 110q36 71 98 106q64 37 151 37q93 0 169 -38l-35 -81q-26 13 -64 25q-35 11 -71 11q-83 0 -131 -59q-35 -44 -44 -111h293v-100h-295q9 -77 44 -119q45 -56 133 -56zM444 1104l-18 -54h103l-21 61q-2 5 -7.5 22t-9.5 29 q-12 41 -14 51q-14 -59 -33 -109zM897 1213v-163h119q39 3 64 18q28 19 28 66q0 42 -30 61q-30 18 -97 18h-84zM564 949v1h-173v-1h173zM1092 948l-3 2h-192v-168h104q60 0 92 23q31 24 31 74q0 46 -32 69z" />
121
+ <glyph unicode="&#xf225;" d="M1774 1774q126 -127 126 -305t-126 -305l-153 -152q-45 -46 -108 -77l-213 65l169 164l76 77l76 76q63 63 63 152t-63 152q-63 64 -152 64t-152 -64l-77 -76l-76 -76l-164 -169l-65 214q31 63 77 107l152 153q127 126 305.5 126t304.5 -126zM200 1600l800 -600l-600 800z M600 1800l400 -800l-200 800h-200zM200 1400l800 -400l-800 200v200zM936 631l64 69l74 -235l-138 -139q-127 -126 -305 -126t-305 126q-126 126 -126 305t126 305l139 138l235 -74l-69 -64l-152 -153q-64 -63 -64 -152t64 -152q63 -64 152 -64t152 64zM1800 400l-800 600 l600 -800zM1400 200l-400 800l200 -800h200zM1800 600l-800 400l800 -200v-200z" />
122
+ <glyph unicode="&#xf226;" d="M376 400h1248q176 219 176 500q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255t-63.5 -311q0 -281 176 -500zM1000 1600q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M600 1400q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1400 1400q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM863 845l337 455v-600q0 -82 -59 -141t-141 -59 t-141 59t-59 141q0 85 63 145zM400 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1600 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1100 700 q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5z" />
123
+ <glyph unicode="&#xf227;" d="M500 200v1500h-200v-1500h200zM600 800v800q83 28 189 28.5t214.5 -14t220.5 -29t239 -13.5t237 28v-800q-83 -35 -201 -39t-229.5 13t-239 32.5t-229.5 19.5t-201 -26z" />
124
+ <glyph unicode="&#xf228;" d="M300 1600h1400v-200h-1400v200zM300 1100h1400v-200h-1400v200zM300 600h1400v-200h-1400v200z" />
125
+ <glyph unicode="&#xf229;" d="M300 997l600 403v-800zM1100 1400l600 -403l-600 -397v800z" />
126
+ <glyph unicode="&#xf230;" d="M1000 1800q-163 0 -301 -80.5t-218.5 -218.5t-80.5 -301q0 -142 70 -266.5t183 -222.5q4 -3 23.5 -19.5t29.5 -25.5t30 -27.5t34.5 -33t33 -35.5t34.5 -42q133 -174 162 -271q29 97 162 271q16 21 34.5 42t33 35.5t34.5 33t30 27.5t29.5 25.5t23.5 19.5q113 98 183 222.5 t70 266.5q0 163 -80.5 301t-218.5 218.5t-301 80.5zM1000 1544q142 0 243 -101t101 -243t-101 -243t-243 -101t-243 101t-101 243t101 243t243 101z" />
127
+ <glyph unicode="&#xf231;" d="M1300 686l117 594q60 33 96.5 91.5t36.5 128.5q0 104 -73 177t-177 73t-177 -73t-73 -177q0 -70 36.5 -128.5t96.5 -91.5zM1300 1650q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1472 1170l328 133v-900l-488 -203l-612 203l-500 -200v900 l500 200l427 -141l173 -730z" />
128
+ <glyph unicode="&#xf232;" d="M400 500v300h-200v1000h1200v-300h200v-300h200v-1000h-1200v300h-200zM1100 1700q-82 0 -141 -59t-59 -141h400q0 83 -58.5 141.5t-141.5 58.5zM400 900v500h-100v-500h100zM1100 1200h400q0 83 -58.5 141.5t-141.5 58.5q-82 0 -141 -59t-59 -141zM600 600v500h-100 v-500h100zM1500 700q83 0 141.5 58.5t58.5 141.5q0 82 -59 141t-141 59t-141 -59t-59 -141q0 -83 58.5 -141.5t141.5 -58.5zM1700 300v200q-101 0 -185.5 16.5t-144.5 43t-115 58.5l-110 64t-115 58.5t-144.5 43t-185.5 16.5v-500h1000z" />
129
+ <glyph unicode="&#xf233;" d="M500 1700h1400v-1100h-200v-200h-200v-200h-1400v1100h200v200h200v200zM1800 700v900h-1200v-900h1200zM1500 1100q-82 0 -141 59t-59 141t59 141t141 59t141 -59t59 -141t-59 -141t-141 -59zM1600 500v100h-1100v800h-100v-900h1200zM700 1400l1000 -600h-1000v600z M1400 300v100h-1100v800h-100v-900h1200z" />
130
+ <glyph unicode="&#xf234;" d="M800 1500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5q0 -42 30.5 -71t69.5 -29h500q41 0 70.5 29.5t29.5 70.5zM1400 1000l400 400v-1000l-400 400v200zM1300 600v600q0 41 -29.5 70.5t-70.5 29.5h-800q-41 0 -70.5 -29.5t-29.5 -70.5v-600 q0 -41 29.5 -70.5t70.5 -29.5h800q41 0 70.5 29.5t29.5 70.5z" />
131
+ <glyph unicode="&#xf235;" d="M1200 700v600q0 82 -59 141t-141 59h-700q-82 0 -141 -59t-59 -141v-600q0 -82 59 -141t141 -59h700q82 0 141 59t59 141zM1300 950l600 -450v1000l-600 -450v-100z" />
132
+ <glyph unicode="&#xf236;" d="M1900 500v1000q0 82 -59 141t-141 59h-1300q-82 0 -141 -59t-59 -141v-1000q0 -82 59 -141t141 -59h1300q82 0 141 59t59 141zM800 600v800l600 -400z" />
133
+ <glyph unicode="&#xf237;" d="M1450 800q124 0 212 -88t88 -212t-88 -212t-212 -88t-212 88t-88 212q0 34 9 69l-438 230q-89 -99 -221 -99q-124 0 -212 88t-88 212t88 212t212 88q130 0 221 -99l438 230q-9 35 -9 69q0 124 88 212t212 88t212 -88t88 -212t-88 -212t-212 -88q-130 0 -221 99l-438 -230 q9 -35 9 -69t-9 -69l438 -230q89 99 221 99z" />
134
+ <glyph unicode="&#xf238;" d="M1800 1650q0 -46 -25.5 -83.5t-66.5 -54.5v-1311h-1509l422 673q-21 37 -21 76q0 62 44 106t106 44t106 -44t44 -106q0 -17 -5 -37l144 -63q45 50 111 50q22 0 51 -9l358 641q-59 44 -59 118q0 62 44 106t106 44q25 0 53 -10l5 9v-11q41 -17 66.5 -54.5t25.5 -83.5z M1608 301v1114l-329 -589q21 -37 21 -76q0 -62 -44 -106t-106 -44t-106 44t-44 106l1 7l-163 72q-40 -29 -88 -29q-24 0 -51 10l-320 -509h1229z" />
135
+ <glyph unicode="&#xf239;" d="M1800 200l1 1228q45 27 72 72.5t27 99.5q0 82 -59 141t-141 59t-141 -59t-59 -141q0 -59 31.5 -107.5t82.5 -72.5l-413 -658q-52 38 -116 38q-62 0 -112 -34t-73 -90l-214 153q14 34 14 71q0 83 -58.5 141.5t-141.5 58.5t-141.5 -58.5t-58.5 -141.5q0 -54 26.5 -99 t71.5 -72l-298 -529h1700zM1700 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM500 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1085 700 q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
136
+ <glyph unicode="&#xf240;" d="M1622 1420q35 -52 23.5 -112.5t-63.5 -95.5t-112.5 -23.5t-95.5 63.5q-21 31 -55 67q-36 34 -67 55q-37 25 -77 41q-42 19 -84 26q-90 20 -182 1q-43 -9 -84 -27q-40 -16 -77 -41q-33 -22 -66 -55q-34 -34 -56 -67q-24 -36 -41 -76q-1 -2 -1 -4q-12 -30 -23 -72h-461v300 h266q9 16 12 20q42 62 91 111q51 51 111 91q63 43 128 70q71 30 141 43q151 32 302 0q70 -13 141 -43q65 -27 128 -70q60 -40 111 -91q49 -49 91 -111zM1250 1000q0 104 -73 177t-177 73t-177 -73t-73 -177t73 -177t177 -73t177 73t73 177zM378 580q-35 52 -23.5 113 t63.5 96t113 23t95 -64q21 -31 55 -67q36 -34 67 -55q37 -25 77 -41q36 -16 84 -26q87 -19 182 0q48 10 84 26q40 16 77 41q33 22 66 55q31 31 56 67q26 41 41 76q1 2 1 4q12 30 23 72h461v-300h-266q-2 -2 -5.5 -9t-6.5 -11q-42 -62 -91 -111q-51 -51 -111 -91 q-63 -43 -128 -70q-64 -27 -141 -43q-151 -32 -302 0q-77 16 -141 43q-65 27 -128 70q-60 40 -111 91q-49 49 -91 111z" />
137
+ <glyph unicode="&#xf242;" d="M1800 1200l-500 -400v299q-86 -2 -152.5 -9t-143.5 -26t-141 -50.5t-132.5 -85.5t-130.5 -128q22 269 199 421t501 173v306zM400 600h1100v200l200 160v-560h-1500v1100h943q-274 -48 -441 -200h-302v-700z" />
138
+ <glyph unicode="&#xf301;" d="M1894 1554q-75 -112 -183 -190q1 -15 1 -47q0 -147 -43 -294.5t-131 -282.5t-210 -239t-293 -166t-366 -62q-304 0 -563 165q48 -5 88 -5q255 0 455 157q-119 2 -212.5 73t-129.5 182q39 -7 69 -7q47 0 96 13q-127 26 -210.5 127t-83.5 233v4q80 -43 166 -46 q-75 51 -119 131.5t-44 174.5q0 100 50 184q138 -169 334.5 -270.5t421.5 -112.5q-10 45 -10 84q0 151 107.5 258.5t259.5 107.5q160 0 268 -116q126 26 233 89q-43 -132 -162 -202q107 11 211 57z" />
139
+ <glyph unicode="&#xf302;" d="M605 1800q-87 0 -148.5 -61.5t-61.5 -148.5v-908q0 -6 -1 -9q0 -209 117.5 -337.5t342.5 -134.5q2 0 7 -0.5t8 -0.5h521q86 0 148 62t62 149t-62 148.5t-148 61.5h-544q-30 0 -30 39v303h574q86 0 148 61.5t62 148.5t-62 149t-148 62h-574v206q0 87 -62 148.5t-149 61.5z " />
140
+ <glyph unicode="&#xf303;" d="M1492 200h308q0 214 -57.5 418t-161 376.5t-251 318t-323 247.5t-383 158.5t-424.5 56.5v-302q210 0 407 -64.5t356 -182t278.5 -274t185 -351t65.5 -401.5zM948 200h308q0 211 -84 403.5t-225.5 332t-337 222t-409.5 82.5v-302q150 0 286 -56t243 -160 q106 -104 162.5 -239t56.5 -283zM413 202q88 0 150.5 61t62.5 148q0 86 -62.5 147.5t-150.5 61.5t-150.5 -61.5t-62.5 -147.5q0 -87 62 -148t151 -61z" />
141
+ <glyph unicode="&#xf304;" d="M289 1800h1423q37 0 62.5 -25.5t25.5 -62.5v-1424q0 -36 -25.5 -62t-62.5 -26h-408v620h208l31 241h-239v154q0 59 25 88.5t95 29.5h128v216q-66 9 -186 9q-142 0 -226.5 -83.5t-84.5 -235.5v-178h-209v-241h209v-620h-766q-37 0 -63 26t-26 62v1424q0 37 26 62.5 t63 25.5z" />
142
+ <glyph unicode="&#xf305;" d="M846 200h293v730h245l37 284h-282v182q0 69 29.5 103.5t111.5 34.5h151v255q-95 11 -219 11q-167 0 -266.5 -98.5t-99.5 -277.5v-210h-246v-284h246v-730z" />
143
+ <glyph unicode="&#xf306;" d="M600 1500v200h-300v-200h300zM1800 500v1100h-900l-200 -200h-500v-900h1600zM1100 1300q124 0 212 -88t88 -212t-88 -212t-212 -88t-212 88t-88 212t88 212t212 88z" />
144
+ <glyph unicode="&#xf307;" d="M803 1554q-7 -40 -4.5 -85.5t20.5 -92t42 -84t61 -61t78 -23.5q50 0 94 36t68 89t35.5 113t-1.5 108q-16 72 -72.5 117.5t-123.5 45.5q-68 0 -124 -45.5t-73 -117.5zM390 1464q-13 -55 4 -123t61.5 -119t101.5 -51t101.5 51t61.5 119t4 123q-14 61 -62 100t-105 39 t-105 -39t-62 -100zM1276 1464q-13 -55 4 -123t61.5 -119t100.5 -51q57 0 101.5 51t61.5 119t4 123q-14 61 -62 100t-105 39t-104.5 -39t-61.5 -100zM1217 321l125 430q37 126 6 215t-122 138t-226 49q-207 0 -304 -109t-40 -293l126 -430q17 -53 79.5 -87t138.5 -34 q75 0 137.5 34t79.5 87zM607 1084q-107 -147 -42 -359l112 -379q-53 -31 -120 -31q-65 0 -117.5 28.5t-67.5 74.5l-107 365q-48 156 34 248t258 92q41 0 79 -6q-11 -11 -29 -33zM1442 1123q176 0 258.5 -92t33.5 -248l-107 -365q-15 -46 -67.5 -74.5t-117.5 -28.5 q-67 0 -120 31l111 377q67 215 -42 361q-13 18 -28 33q38 6 79 6z" />
145
+ <glyph unicode="&#xf308;" d="M1770 1368l141 -142l-347 -341l-142 142l84 82q-54 129 -151 231l-461 -659l-526 -470q-29 -29 -70.5 -29t-71.5 29l-120 121q-29 29 -29 70.5t29 70.5l1097 992q-231 145 -567 148q412 125 658 30q25 -10 50 -23.5t44.5 -25t45 -33t39.5 -32.5t40 -39t35.5 -37.5t37 -43 t33 -40t34.5 -44t32 -40.5z" />
146
+ <glyph unicode="&#xf309;" d="M855 1694q20 -7 21 -22t-11 -35.5t-30 -44.5t-32 -51.5t-19.5 -54t9 -54.5t52.5 -51q23 -17 61 -5t75 37t82.5 63.5t83.5 74t78 69t65 47.5q39 22 84.5 30t95 0t96 -47t77.5 -106q33 -72 41 -182t-14.5 -239.5t-70 -255.5t-135 -242t-200.5 -187q-117 -74 -246.5 -106 t-252.5 -20t-233.5 58.5t-198.5 132.5t-139 201q-29 66 -39.5 141t-2.5 147.5t30 147.5t57.5 142.5t79 131t95 113.5t106.5 91t113 62t113.5 27.5t108.5 -13.5zM976 1049q30 -68 126 -56q91 12 173 84q96 86 93 187q-1 34 -13 65q-26 65 -124 33q-92 -29 -176 -112 q-94 -94 -87 -171q2 -16 8 -30z" />
147
+ <glyph unicode="&#xf310;" d="M400 1400h600v200h-800v-1201h800v201h-600v800zM600 1200h600v300l600 -500l-600 -500v300h-600v400z" />
148
+ <glyph unicode="&#xf311;" d="M376 299h1248q176 221 176 501q0 162 -63.5 310.5t-170.5 255.5t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255.5t-63.5 -310.5q0 -280 176 -501zM900 1400q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71z M400 1200q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM852 860q37 37 200 124.5t307 156.5l144 69q-30 -64 -76.5 -160.5t-141 -275t-131.5 -215.5q-63 -63 -151 -63t-151 63q-62 62 -62 150.5t62 150.5zM300 700 q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM900 700q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM1500 700q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5 q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71z" />
149
+ <glyph unicode="&#xf312;" d="M1700 1200h100v-1100h-1600v1100h100v200q0 136 67 251t182 182t251 67q105 0 200 -42q95 42 200 42q136 0 251 -67t182 -182t67 -251v-200zM500 1400v-200h200v200q0 164 102 300h-2q-124 0 -212 -88t-88 -212zM1500 1200v200q0 124 -88 212t-212 88h-2 q102 -136 102 -300v-200h200zM1000 1622q-100 -90 -100 -222v-200h200v200q0 132 -100 222z" />
150
+ <glyph unicode="&#xf313;" d="M446 1484l54 -230l-54 -229l201 -124l123 -201l230 54l230 -54l123 201l201 124l-54 229l54 230l-200 124l-124 201l-230 -55l-229 54l-125 -200zM1001 850q-167 0 -284 117t-117 284q0 165 117.5 282t283.5 117q165 0 282 -117t117 -282q0 -166 -117 -283.5t-282 -117.5 zM999 950q-124 0 -211.5 87.5t-87.5 212.5q0 124 87.5 212t211.5 88t212.5 -88t88.5 -212t-88 -212t-213 -88zM1383 840l-128 -224l-208 47l253 -583l140 220h250zM613 833l125 -225l213 51l-251 -579l-140 220h-250z" />
151
+ <glyph unicode="&#xf314;" d="M200 1800h700v-700h-700v700zM1100 1800v-700h700v700h-700zM550 1550l150 150h-300zM1200 1200v500h500v-500h-500zM450 1450l-150 150v-300zM800 1600l-150 -150l150 -150v300zM550 1350l-150 -150h300zM900 200v700h-700v-700h700zM1800 200h-700v700h700v-700z M800 800v-500h-500v500h500zM1450 650l150 150h-300zM1200 400l150 150l-150 150v-300zM1550 550l150 -150v300zM1450 450l-150 -150h300z" />
152
+ <glyph unicode="&#xf315;" d="M1500 1400v-200q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-1000q-82 0 -141 59t-59 141v700q0 82 59 141t141 59v200q0 136 67 251t182 182t251 67t251 -67t182 -182t67 -251zM800 1400v-200h400v200q0 82 -59 141t-141 59t-141 -59t-59 -141zM1080 375v217 q54 24 87 73.5t33 109.5q0 83 -59 141.5t-141 58.5t-141 -58.5t-59 -141.5q0 -60 33 -109.5t87 -73.5v-217h160z" />
153
+ <glyph unicode="&#xf316;" d="M1401 1600v-600h200v800h-1201v-800h201v600h800zM1201 1400v-600h300l-500 -600l-500 600h300v600h400z" />
154
+ <glyph unicode="&#xf317;" d="M800 600v600h-300l500 600l500 -600h-300v-600h-400zM600 400v600h-200v-800h1201v800h-201v-600h-800z" />
155
+ <glyph unicode="&#xf318;" d="M500 1300h1300v-1000h-1600v1300h700l200 -200h-700v-900h100v800z" />
156
+ <glyph unicode="&#xf319;" d="M1900 1000q0 183 -71.5 349.5t-192 287t-287 192t-349.5 71.5t-349.5 -71.5t-287 -192t-192 -287t-71.5 -349.5t71.5 -349.5t192 -287t287 -192t349.5 -71.5t349.5 71.5t287 192t192 287t71.5 349.5zM800 990q-378 39 -548 229q74 240 271.5 396t453.5 167 q-33 -55 -56 -126t-32 -149t12 -154.5t73 -127.5q-35 -5 -69 6t-58.5 30t-51 40t-45.5 36t-43 17.5t-44 -14.5q-88 -69 -42 -150q50 -88 228 -144q62 -20 134 -33q97 -17 164.5 -40.5t106.5 -49.5t60 -62.5t27 -71t5 -84.5q-6 -298 -406 -470q2 86 -11.5 153t-38 109 t-55 73.5t-63.5 52t-62.5 37t-54 36.5t-35.5 43q10 42 18.5 67.5t27.5 61.5t52 66t82 56zM1649 1422q31 -48 54.5 -97.5t38.5 -92.5t23 -89t11.5 -81t1.5 -75.5t-4.5 -66t-10 -58.5t-11.5 -46.5t-12 -37.5l-7 -24q-21 51 -52 95.5t-60.5 74.5t-57.5 58t-50.5 60t-32.5 66 q-39 137 169 314z" />
157
+ <glyph unicode="&#xf320;" d="M552 1800h743q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-1300q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v1200q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5v-1200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v596h-43 q-123 0 -227 60.5t-164.5 164.5t-60.5 227t60.5 227t164.5 164.5t227 60.5zM1400 600l500 400l-500 400v-800z" />
158
+ <glyph unicode="&#xf321;" d="M1365 1712q145 -74 248 -198t149 -268.5t35 -305t-85 -305.5t-198 -247.5t-268 -149t-305 -35.5t-306 85q-138 71 -237 185t-149 255l164 103q34 -120 113.5 -218t194.5 -158q111 -57 234 -65.5t233 27t204.5 114.5t151.5 190t66 234t-27 233t-114.5 205t-189.5 152 t-234 65.5t-233 -27t-204.5 -114.5t-151.5 -190l188 -97l-495 -308l-39 582l178 -91q74 145 198.5 248t269 149t305 34.5t304.5 -84.5zM929 929q-29 29 -29 71q0 4 2 10t2 9h-1l97 481l97 -481l303 -319l-450 212l2 2q-13 7 -23 15z" />
159
+ <glyph unicode="&#xf322;" d="M400 1500h-322q-30 0 -51.5 -23.5t-17.5 -60.5l156 -999q185 736 221 913q8 36 36.5 53t61.5 17h516q-70 208 -77 231q-19 69 -78 69h-331q-28 0 -50.5 -17t-29.5 -47zM888 1500h-400q2 4 5 11t12.5 24t19.5 30t23.5 24t26.5 11h213q21 0 46 -25t40 -50zM267 375 q-49 -75 -126 -75h1573q40 0 67.5 22t35.5 61l168 844q5 35 -15 54t-47 19h-323v147q0 15 -19.5 34t-46.5 19h-376q-23 0 -45 -14.5t-32 -29.5l-10 -14l-71 -142h-441q-25 0 -45 -13.5t-24 -36.5q-159 -670 -172 -733q-17 -92 -51 -142zM1538 1300h-438q2 4 6.5 11t17.5 24 t25.5 30t30.5 24t33 11h229q20 0 37 -10.5t27.5 -25t18 -29t10.5 -25.5z" />
160
+ <glyph unicode="&#xf323;" d="M1100 1800h700v-700l-1000 -1000l-700 700zM1400 1200q82 0 141 59t59 141t-59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59z" />
161
+ <glyph unicode="&#xf324;" d="M2000 1000q0 203 -79.5 388t-213.5 319t-319 213.5t-388 79.5t-388.5 -79.5t-319.5 -213.5t-213 -319t-79 -388q0 -163 50.5 -315.5t143 -275.5t215.5 -215.5t275.5 -143t315.5 -50.5q203 0 388 79t319 213t213.5 319.5t79.5 388.5zM778 463l-341 915l117 8q24 3 32 31 t-3 54.5t-35 25.5q-145 -11 -237 -11q-37 0 -58 1q121 186 318.5 294t428.5 108q172 0 327.5 -61t277.5 -173q-58 9 -111.5 -33.5t-53.5 -124.5q0 -18 4.5 -37.5t8.5 -32.5t16 -36.5t17 -31.5t22.5 -37t21.5 -35q55 -96 55 -246q0 -66 -35 -191t-70 -217l-35 -92l-303 837 q24 1 44.5 5t29.5 8l8 4q24 2 32 33t-3 60.5t-35 28.5q-144 -12 -238 -12q-39 0 -97 3t-97 6l-39 3q-24 1 -35 -29t-3 -61t32 -32l92 -8l126 -341zM1741 1000q12 32 17.5 47t16.5 60.5t14.5 85t3.5 102t-9 130.5q105 -193 105 -425q0 -245 -119 -453.5t-321 -324.5 q247 661 292 778zM610 191q-226 109 -362.5 328t-136.5 481q0 196 72 359q336 -921 427 -1168zM1013 854l258 -698q-133 -45 -271 -45q-121 0 -229 33q28 83 112.5 329.5t129.5 380.5z" />
162
+ <glyph unicode="&#xf325;" d="M1800 700h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200h-500v-200h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5 t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200h-500v-200h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200q0 82 59 141t141 59h500v200h-100q-41 0 -70.5 29.5t-29.5 71.5 v298q0 42 29.5 71.5t70.5 29.5h400q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-100v-200h500q82 0 141 -59t59 -141v-200z" />
163
+ <glyph unicode="&#xf326;" d="M1100 1300h-151q-46 0 -89.5 -19.5t-69.5 -50.5l-90 270h-287l-239 -700h169l74 200h283v-400h-500q-82 0 -141 59t-59 141v700q0 82 59 141t141 59h700q82 0 141 -59t59 -141v-200zM651 1100h-202l100 293zM1000 1200h700q82 0 141 -59t59 -141v-700q0 -82 -59 -141 t-141 -59h-700q-82 0 -141 59t-59 141v700q0 82 59 141t141 59zM1725 700v108h-317v217h-116v-217h-317v-108h128q9 -66 42 -136t86 -126q-64 -26 -131.5 -44t-99.5 -18l5 -26q5 -26 10.5 -62t4.5 -58q62 0 154 32.5t174 82.5q83 -50 177 -82.5t157 -32.5q-1 14 1 33.5 t5 38.5t6 35.5t6 27.5l2 11q-33 0 -103 18.5t-135 44.5q51 56 83.5 126t41.5 135h136zM1344 507q-76 70 -101 193h209q-26 -124 -100 -193l-4 -3q-3 2 -4 3z" />
164
+ <glyph unicode="&#xf327;" d="M1480 1812l334 -335q41 -44 40.5 -104t-37.5 -98l-986 -988l-686 -143l143 688q937 940 985 989q35 37 100 35t107 -44zM1143 1468l-688 -691l137 -137l682 697zM777 454l688 691l-132 132l-689 -689z" />
165
+ <glyph unicode="&#xf328;" d="M700 1480q83 0 141.5 -58.5t58.5 -141.5q0 -52 -28 -100q-72 20 -172 20q-44 0 -87 -5t-64 -10l-21 -5q-28 48 -28 100q0 83 58.5 141.5t141.5 58.5zM1300 1480q83 0 141.5 -58.5t58.5 -141.5q0 -52 -28 -100q-72 20 -172 20q-44 0 -87 -5t-64 -10l-21 -5q-28 48 -28 100 q0 83 58.5 141.5t141.5 58.5zM1000 110q279 0 506 162t317 426l-132 46q-76 -222 -266.5 -358t-424.5 -136t-424.5 136t-266.5 358l-132 -46q90 -264 317 -426t506 -162z" />
166
+ <glyph unicode="&#xf329;" d="M1500 1300v200h-1000v-200h1000zM1500 900v200h-1000v-200h1000zM1500 500v200h-1000v-200h1000z" />
167
+ <glyph unicode="&#xf330;" d="M1600 1700h200v-1600h-1300q-124 0 -212 88t-88 212v1200q0 124 88 212t212 88h900v-1400h-900q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5h1100v1400z" />
168
+ <glyph unicode="&#xf331;" d="M500 300h1300v-200h-1300q-124 0 -212 88t-88 212v1200q0 124 88 212t212 88h1300v-1400h-1300q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM700 650v1100q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5v-1100q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5 t14.5 35.5z" />
169
+ <glyph unicode="&#xf332;" d="M1000 1800q12 -8 34.5 -21.5t96 -48t150.5 -61t192 -48t227 -21.5q0 -224 -38.5 -423t-100.5 -336.5t-136.5 -252.5t-149 -184.5t-136.5 -117.5t-101 -67l-38 -19q-9 4 -24.5 11.5t-63.5 38.5t-94 68.5t-109 103.5t-117.5 141.5t-109.5 185t-94 231t-63.5 282.5 t-24.5 338q112 0 225.5 20.5t195 50t147 59t98.5 50.5zM1000 1000h500q4 4 11 13t24 48t30 90t24 144t11 205q-20 4 -54.5 11.5t-126 30t-167 45t-150 54t-102.5 59.5v-700h-500q28 -112 90 -225.5t130 -195t132 -147t106 -98.5l42 -34v700z" />
170
+ <glyph unicode="&#xf333;" d="M1700 1300v200h-1400v-200h1400zM1700 900v200h-1400v-200h1400zM1700 500v200h-1400v-200h1400z" />
171
+ <glyph unicode="&#xf334;" d="M1000 1800q12 -8 34.5 -21.5t96 -48t150.5 -61t192 -48t227 -21.5q0 -224 -38.5 -423t-100.5 -336.5t-136.5 -252.5t-149 -184.5t-136.5 -117.5t-101 -67l-38 -19q-9 4 -24.5 11.5t-63.5 38.5t-94 68.5t-109 103.5t-117.5 141.5t-109.5 185t-94 231t-63.5 282.5 t-24.5 338q112 0 225.5 20.5t195 50t147 59t98.5 50.5z" />
172
+ <glyph unicode="&#xf335;" d="M1495 1354l-354 -354l354 -354l-141 -141l-354 353l-353 -353l-142 142l353 353l-353 353l142 142l353 -353l354 353z" />
173
+ <glyph unicode="&#xf336;" d="M1800 400h-1600v1200h1600v-1200zM705 1147q19 11 33 24q14 16 24 34q13 26 17 37q5 13 10 34l6 24q0 2 0.5 5t0.5 4q7 45 -4 90q-12 43 -46 72q-35 29 -86 29q-29 0 -56 -11q-26 -12 -41 -30q-17 -20 -27 -44t-12 -51q-1 -18 1 -55l2 -9q2 -11 6 -25q9 -30 10 -33 q6 -18 17 -37q13 -20 25 -33q15 -17 34 -25q19 -9 43 -9t43 9zM1700 1100v400h-500v-400h500zM662 1017l-138 88q-61 0 -114 -32q-53 -33 -81 -85q-29 -52 -29 -107v-125l20 -5q26 -8 55 -14q41 -10 80 -17q34 -7 100 -14q55 -6 107 -6q50 0 107 6q48 5 98 14q54 10 82 17 q16 3 34 8t20 5q13 4 21 6v125q0 55 -31 107q-32 53 -84 86q-53 33 -111 33zM1700 900v100h-500v-100h500zM1700 700v100h-500v-100h500zM1700 500v100h-1400v-100h1400z" />
174
+ <glyph unicode="&#xf337;" d="M1800 200h-1600v1600h1600v-1600zM805 1247q19 11 33 24q14 16 24 34q13 26 17 37q5 13 10 34l6 24q0 2 0.5 5t0.5 4q7 45 -4 90q-12 43 -46 72q-35 29 -86 29q-29 0 -56 -11q-26 -12 -41 -30q-17 -20 -27 -44t-12 -51q-1 -18 1 -55l2 -9q2 -11 6 -25q9 -30 10 -33 q6 -18 17 -37q13 -20 25 -33q15 -17 34 -25q19 -9 43 -9t43 9zM1600 1500v100h-500v-100h500zM1600 1300v100h-500v-100h500zM762 1117l-138 88q-61 0 -114 -32q-53 -33 -81 -85q-29 -52 -29 -107v-125l20 -5q26 -8 55 -14q41 -10 80 -17q34 -7 100 -14q56 -6 107 -6 q50 0 107 6q48 5 98 14q54 10 82 17q16 3 34 8t20 5q13 4 21 6v125q0 55 -31 107q-32 53 -84 86q-53 33 -111 33zM1600 1100v100h-300v-100h300zM1600 900v100h-300v-100h300zM1600 600v100h-1200v-100h1200zM1600 400v100h-1200v-100h1200z" />
175
+ <glyph unicode="&#xf338;" d="M730 1400l-3 19q-6 55 -3 108q3 56 25 104q22 50 52 86q33 39 83 60q52 23 113 23q103 0 171 -59q69 -60 91 -144q22 -85 9 -178l-3 -19q-1 -10 -11 -48q-7 -33 -20 -69q-13 -34 -34 -72q-18 -35 -47 -69q-25 -26 -67 -48q-39 -19 -86 -19q-46 0 -87 19q-42 21 -67 50 q-25 28 -49 66q-22 36 -34 73q-14 39 -21 67q-9 33 -12 50zM1650 776q50 -85 50 -214v-249q0 -4 -29 -13q-7 -2 -37 -10.5t-60 -16.5q-110 -24 -165 -34q-85 -15 -195 -27q-112 -12 -213 -12t-214 12q-90 8 -198 27q-44 8 -156 34q-43 10 -106 29l-27 11v249q0 134 46 215 q65 115 150 168q47 29 136 42t168 13l167 -167l-67 -133v-300l102 -108l98 108v300l-68 133l165 167q209 0 290 -52q96 -61 163 -172z" />
176
+ <glyph unicode="&#xf339;" d="M1000 1900q153 0 282.5 -75.5t205 -204.5t75.5 -282q0 -52 -21 -118t-50.5 -123.5t-59.5 -107.5t-51 -79l-21 -30q-25 -33 -42.5 -86t-17.5 -94v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 -17.5 94t-42.5 86q-8 11 -21.5 30.5 t-48.5 77t-61.5 110.5t-48.5 120.5t-22 119.5q0 153 75 282t204.5 204.5t282.5 75.5zM700 313v87h600v-87q0 -53 -16 -83t-59 -30h-25q0 -46 -27.5 -73t-74.5 -27h-200q-46 0 -72 26.5t-26 73.5h-25q-43 0 -59 30t-16 83z" />
177
+ <glyph unicode="&#xf340;" d="M1800 1100v-200h-1200l400 -400l-100 -200l-700 700l700 700l100 -200l-400 -400h1200z" />
178
+ <glyph unicode="&#xf341;" d="M1400 1500l-500 -500l500 -500l-100 -200l-700 700l700 700z" />
179
+ <glyph unicode="&#xf342;" d="M1100 200h-200v1200l-400 -400l-200 100l700 700l700 -700l-200 -100l-400 400v-1200z" />
180
+ <glyph unicode="&#xf343;" d="M1500 600l-500 500l-500 -500l-200 100l700 700l700 -700z" />
181
+ <glyph unicode="&#xf344;" d="M200 900v200h1200l-400 400l100 200l700 -700l-700 -700l-100 200l400 400h-1200z" />
182
+ <glyph unicode="&#xf345;" d="M600 500l500 500l-500 500l100 200l700 -700l-700 -700z" />
183
+ <glyph unicode="&#xf346;" d="M900 1800h200v-1200l400 400l200 -100l-700 -700l-700 700l200 100l400 -400v1200z" />
184
+ <glyph unicode="&#xf347;" d="M500 1400l500 -500l500 500l200 -100l-700 -700l-700 700z" />
185
+ <glyph unicode="&#xf348;" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1100 1400q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5 t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5zM1100 500v600h-200v-600h200z" />
186
+ <glyph unicode="&#xf349;" d="M2000 1500v300h-2000v-300h2000zM2000 900v300h-2000v-300h2000zM2000 300v300h-2000v-300h2000z" />
187
+ <glyph unicode="&#xf448;" d="M1000 2000q163 0 315.5 -50.5t275.5 -143t215.5 -215.5t143 -275.5t50.5 -315.5t-50.5 -315.5t-143 -275.5t-215.5 -215.5t-275.5 -143t-315.5 -50.5t-315.5 50.5t-275.5 143t-215.5 215.5t-143 275.5t-50.5 315.5t50.5 315.5t143 275.5t215.5 215.5t275.5 143 t315.5 50.5zM1000 1950q-193 0 -369 -75t-303.5 -202.5t-202.5 -303.5t-75 -369t75 -369t202.5 -303.5t303.5 -202.5t369 -75t369 75t303.5 202.5t202.5 303.5t75 369t-75 369t-202.5 303.5t-303.5 202.5t-369 75zM1000 1850q173 0 330.5 -67t271.5 -181t181 -271.5 t67 -330.5t-67 -330.5t-181 -271.5t-271.5 -181t-330.5 -67t-330.5 67t-271.5 181t-181 271.5t-67 330.5t67 330.5t181 271.5t271.5 181t330.5 67zM1180 1679q-83 0 -155 -45q118 -28 195.5 -124t77.5 -221q0 -100 -55 -187q99 22 164 101.5t65 183.5q0 121 -85.5 206.5 t-206.5 85.5zM942 1579q-121 0 -206.5 -86t-85.5 -207t85.5 -206.5t206.5 -85.5t207 85.5t86 206.5q0 122 -85.5 207.5t-207.5 85.5zM1367 1078l-51 -59q66 -19 115 -63.5t72.5 -94t38 -96t16.5 -77.5l3 -30h128q0 76 -11 138.5t-29.5 104.5t-43 75t-51 51t-53 30.5 t-51 16.5t-43 5.5t-29.5 0.5zM1157 998l-212 -209l-212 209q-68 -4 -123 -23t-90.5 -48.5t-62.5 -67t-41 -78t-22 -81t-9.5 -76.5t-0.5 -63.5t3 -44.5l2 -16h1108q10 102 -4 184t-43 132.5t-67 88t-77.5 54.5t-73 27t-54.5 11z" />
188
+ <glyph unicode="&#xf449;" d="M1350 1300h-700q-62 0 -106 44t-44 106t44 106t106 44h159q-9 29 -9 50q0 62 44 106t106 44h100q62 0 106 -44t44 -106q0 -21 -9 -50h159q62 0 106 -44t44 -106t-44 -106t-106 -44zM400 1200h1200q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1200 q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM500 900h1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM700 600h600q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-109q9 -29 9 -50 q0 -62 -44 -106t-106 -44h-100q-62 0 -106 44t-44 106q0 21 9 50h-109q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
189
+ <glyph unicode="&#xf450;" d="M1044 1834q-44 44 -106 44t-106 -44l-566 -566q-44 -44 -44 -106t44 -106q46 -44 107.5 -43.5t104.5 43.5l566 566q44 44 44 106t-44 106zM1327 1551q-44 44 -106.5 44t-105.5 -44l-566 -566q-44 -43 -44 -105.5t44 -106.5q46 -44 107.5 -43t104.5 43l566 566 q43 43 43 105.5t-43 106.5zM1433 879l418 -418q44 -44 44 -106t-44 -106t-106.5 -44t-105.5 44l-418 418l-177 -177q-44 -44 -106 -44t-106 44t-44 106.5t44 106.5l566 565q44 44 106 44t106 -44t44 -106t-44 -106zM500 500q0 45 -17 102.5t-41.5 107.5t-49 94t-41.5 70 l-17 26q-15 -31 -37 -80.5t-59.5 -157.5t-37.5 -162q0 -90 38.5 -145t95.5 -55h32q62 0 98 44.5t36 155.5z" />
190
+ <glyph unicode="&#xf451;" d="M1754 971q88 -88 88 -212.5t-88 -212.5t-212.5 -88t-212.5 88l-34 52q0 -66 -9.5 -124t-22.5 -99.5t-36.5 -79.5t-42.5 -60.5t-49.5 -47t-48 -35.5t-47.5 -28.5t-39 -23.5q-11 8 -49.5 32t-64.5 42t-63.5 58.5t-60.5 85.5t-40 118.5t-17 161.5l-34 -52 q-88 -88 -212.5 -88t-212.5 88t-88 212.5t88 212.5q102 67 210 130q-136 184 -136 411q0 47 8 100q18 -131 84 -245.5t168 -196.5q53 28 126.5 57t110.5 35h-17q-82 0 -141 59t-59 141t59 141t141 59v50q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-50h200v50 q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-50q82 0 141 -59t59 -141t-59 -141t-141 -59h-17q36 -6 112.5 -36.5t125.5 -55.5q102 82 168 196.5t84 245.5q8 -53 8 -100q0 -227 -136 -411q48 -28 100 -60.5t81 -50.5zM850 1362q38 0 69 30t31 70q0 41 -29.5 70.5 t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM1150 1562q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5zM920 989q-19 -17 -19 -43q2 -19 16 -32.5t33 -13.5h100q19 0 33 13.5t16 32.5q0 21 -19 43 q-15 11 -30 11h-100q-15 0 -30 -11zM1200 750q0 23 -19 38q-15 12 -31 12h-300q-16 0 -31 -12q-19 -17 -19 -38t14.5 -35.5t35.5 -14.5h300q21 0 35.5 14.5t14.5 35.5zM850 500h300q21 0 35.5 14.5t14.5 35.5t-14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5 t14.5 -35.5t35.5 -14.5zM950 300h100q21 0 35.5 14.5t14.5 35.5t-14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5t14.5 -35.5t35.5 -14.5z" />
191
+ <glyph unicode="&#xf452;" d="M800 1900v-700h200v200q0 115 92 207.5t208 92.5v-86q91 86 200 86v-300h100q82 0 141 -59t59 -141t-59 -141t-141 -59h-100v-100v-1v-499q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v218q-51 -18 -100 -18v-200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5 t-29.5 70.5v200h-200v-200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v200q-49 0 -100 18v-218q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v400h-100v100q0 124 88 212t212 88h200v700h100zM1300 1200q41 0 70.5 29.5t29.5 70.5t-29.5 70.5 t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5z" />
192
+ <glyph unicode="&#xf453;" d="M900 1700q0 92 -100 200q-40 -40 -70 -98t-30 -102q0 -37 30 -68.5t70 -31.5q41 0 70.5 30t29.5 70zM1300 1700q0 92 -100 200q-40 -40 -70 -98t-30 -102q0 -37 30 -68.5t70 -31.5q41 0 70.5 30t29.5 70zM900 1100v350q0 41 -29.5 70.5t-70.5 29.5q-42 0 -71 -30.5 t-29 -69.5v-350q0 -41 29.5 -70.5t70.5 -29.5q42 0 71 30.5t29 69.5zM1300 1100v350q0 41 -29.5 70.5t-70.5 29.5q-42 0 -71 -30.5t-29 -69.5v-350q0 -41 29.5 -70.5t70.5 -29.5q42 0 71 30.5t29 69.5zM1700 1000q0 109 -95 201t-255 145v-246q0 -62 -44 -106t-106 -44 t-106 44t-44 106v299q-8 0 -25 0.5t-25 0.5t-25 -0.5t-25 -0.5v-299q0 -62 -44 -106t-106 -44t-106 44t-44 106v246q-160 -53 -255 -145t-95 -201q0 -110 78.5 -197.5t242.5 -139.5q32 -10 108.5 -42t142.5 -51t128 -19t128 19t142.5 51.5t108.5 42.5q163 51 242 138.5 t79 197.5zM1000 457q63 0 131.5 19.5t144 50.5t112.5 41q68 19 118.5 43.5t86.5 57.5t57 59.5t50 71.5v-300q0 -109 -93.5 -201t-255 -145.5t-351.5 -53.5t-351.5 53.5t-255 145.5t-93.5 201v300q37 -58 70 -94.5t95.5 -75t149.5 -63.5q35 -10 111.5 -41t143.5 -50t130 -19z " />
193
+ <glyph unicode="&#xf454;" d="M875 1423q0 39 -18 92t-43.5 101t-51.5 90.5t-44 67.5l-18 26q-7 -10 -19 -27t-42 -65.5t-53 -93t-42 -98.5t-19 -93q0 -98 43 -135.5t132 -37.5t132 37.5t43 135.5zM1475 1423q0 39 -18 92t-43.5 101t-51.5 90.5t-44 67.5l-18 26q-7 -10 -19 -27t-42 -65.5t-53 -93 t-42 -98.5t-19 -93q0 -98 43 -135.5t132 -37.5t132 37.5t43 135.5zM900 300v800q0 41 -29.5 70.5t-70.5 29.5h-200q-41 0 -70.5 -29.5t-29.5 -70.5v-800q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM1500 300v800q0 41 -29.5 70.5t-70.5 29.5h-200 q-41 0 -70.5 -29.5t-29.5 -70.5v-800q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM600 900l200 100v-200l-200 -100v200zM1200 900l200 100v-200l-200 -100v200zM600 600l200 100v-200l-200 -100v200zM1200 600l200 100v-200l-200 -100v200z" />
194
+ <glyph unicode="&#xf455;" d="M1098 1322l452 -822q-48 -96 -142 -166t-199 -102t-209 -32t-209 32t-199 102t-142 166l450 818q-57 93 -168 146t-261 57l246 292q199 -141 297 -331q51 80 109.5 131t160.5 81l183 -286q-192 46 -369 -86zM817 960l-93 -169q71 -16 154 -16q199 0 355 95l-101 182 q-136 -83 -315 -92zM903 422q147 0 272 50t202 136l-98 176q-77 -86 -202 -136.5t-272 -50.5q-87 0 -176 21l-63 -115q152 -81 337 -81z" />
195
+ <glyph unicode="&#xf456;" d="M1545 1375q89 -46 127.5 -130t22.5 -181t-80 -187q-59 -83 -159.5 -134.5t-186.5 -43.5l-264 -499h-105l-265 499q-85 -12 -189.5 40t-165.5 139q-64 90 -80 187t23 181t128 129q68 34 143 31q-2 -62 7 -121q20 -129 99.5 -252t186.5 -185q-30 -86 -88 -125l201 -381v566 q-102 28 -191.5 144t-108.5 248q-20 132 16 246t124 184t210 70t210 -70t124 -184t16 -246q-19 -132 -108.5 -248t-191.5 -144v-577l207 384q-63 33 -99 130q109 61 190 185.5t101 254.5q9 59 7 122q73 2 139 -32z" />
196
+ <glyph unicode="&#xf457;" d="M1000 1800q84 0 197.5 -51.5t215 -125t191 -147t142.5 -124.5l54 -52v-1100h-1600v1100q20 20 55.5 54t138 120t196.5 152t210 120t200 54zM1700 328l-373 292l373 280l-43 37l-226 -130l24 431l-877 52l-46 -454l-199 95l-33 -31l373 -280l-344 -285l40 -43l631 408 l653 -415z" />
197
+ <glyph unicode="&#xf459;" d="M1000 1900l-300 -600l-600 -75l413 -462l-113 -663l600 300l600 -300l-112 663l412 462l-600 75zM1000 1676l234 -469l465 -58l-318 -356l87 -515l-468 234v1164z" />
198
+ <glyph unicode="&#xf460;" d="M400 1100h1200v-200h-1200v200z" />
199
+ <glyph unicode="&#xf462;" d="M925 836q88 -62 123 -128t35 -165q0 -62 -30 -119.5t-84.5 -104t-140 -74t-189.5 -27.5q-126 0 -231 31.5t-168.5 93t-63.5 140.5q0 128 130 226.5t314 98.5q14 0 40 0.5t38 0.5q-61 61 -61 126q0 43 23 86q-8 -1 -22 0.5t-20 1.5q-151 0 -247.5 97t-96.5 237 q0 87 55.5 166.5t147 128t190.5 48.5h452l-101 -100h-144q83 -87 103 -116q43 -63 43 -144q0 -135 -128 -234q-53 -42 -69.5 -67t-16.5 -62q0 -28 39.5 -70.5t79.5 -70.5zM683 1063q88 -3 139 76t36 194q-15 114 -87 195t-160 84q-88 2 -139 -75t-36 -191q15 -115 87.5 -198 t159.5 -85zM1700 1000v-100h-200v-200h-100v200h-200v100h200v200h100v-200h200zM638 290q172 0 250 63.5t78 170.5q0 22 -5 47q-4 16 -10.5 29.5t-18 27.5t-20.5 23.5t-28 24t-29.5 21.5t-36.5 25t-38 26q-56 18 -112 18q-131 2 -230 -68.5t-99 -166.5q0 -100 85.5 -170.5 t213.5 -70.5z" />
200
+ <glyph unicode="&#xf463;" d="M1020 1672q173 0 323.5 -79t247.5 -216t121 -305h208l-350 -400l-350 400h232q-34 149 -154.5 247t-277.5 98q-106 0 -199 -48t-155 -130l-171 195q98 112 234.5 175t290.5 63zM980 328q-130 0 -249.5 46.5t-210.5 126.5t-152.5 190.5t-79.5 236.5h-208l350 400 q59 -67 175.5 -200t174.5 -200h-232q34 -149 154.5 -247t277.5 -98q106 0 199 48t155 130l171 -195q-98 -112 -234 -175t-291 -63z" />
201
+ <glyph unicode="&#xf464;" d="M1389 1661l271 -272q34 -35 33.5 -84t-30.5 -80l-801 -802l-556 -116l116 558q760 763 799 803q29 30 81.5 28.5t86.5 -35.5zM1116 1382l-559 -561l111 -111l554 565zM819 559l558 560l-107 108l-559 -560z" />
202
+ <glyph unicode="&#xf465;" d="M387 1600h1325q188 0 188 -179v-842q0 -179 -188 -179h-1325q-188 0 -188 179v842q0 179 188 179zM1049 740l674 553q21 17 27 45.5t-14 61.5q-21 30 -56.5 33.5t-60.5 -16.5l-570 -386l-569 386q-25 20 -60.5 16.5t-56.5 -33.5q-20 -33 -14 -61.5t27 -45.5z" />
203
+ <glyph unicode="&#xf466;" d="M1900 550v900q0 62 -44 106t-106 44h-1401q-62 0 -106 -44t-44 -106v-900q0 -62 44 -106t106 -44h1401q62 0 106 44t44 106zM1769 1461q15 -15 17.5 -32.5t-4 -29.5t-16.5 -22l-406 -372l390 -406q26 -30 6 -51q-9 -11 -28 -12t-28 7l-437 373l-214 -195l-213 195 l-437 -373q-9 -8 -28 -7t-28 12q-20 21 6 51l390 406l-406 372q-10 10 -16.5 22t-4 29.5t17.5 32.5q40 40 95 -7l624 -504l625 504q55 47 95 7z" />
204
+ <glyph unicode="&#xf467;" d="M1801 882v867q0 89 -59 129.5t-141 7.5l-1201 -477q-83 -33 -141.5 -120t-58.5 -177v-866q0 -90 58.5 -130t141.5 -7l1201 477q83 33 141.5 119.5t58.5 176.5zM1658 1628l-604 -933l-665 460q-7 5 -13 12.5t-10.5 22t6.5 29.5q9 16 25.5 21.5t28.5 2.5l11 -3l630 -232 q483 634 511 670q12 15 30 20.5t43 -7.5q33 -23 7 -63z" />
205
+ <glyph unicode="&#xf468;" d="M1800 1000q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM723 1643l149 -373q-97 -45 -142 -142l-373 149q53 123 148 218 t218 148zM1643 1277l-373 -149q-45 97 -142 142l149 373q123 -53 218 -148t148 -218zM1000 800q-82 0 -141 59t-59 141t59 141t141 59t141 -59t59 -141t-59 -141t-141 -59zM357 723l373 149q45 -97 142 -142l-149 -373q-123 53 -218 148t-148 218zM1277 357l-149 373 q97 45 142 142l373 -149q-53 -123 -148 -218t-218 -148z" />
206
+ <glyph unicode="&#xf469;" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1000 400q163 0 301 80.5t218.5 218.5t80.5 301t-80.5 301 t-218.5 218.5t-301 80.5t-301 -80.5t-218.5 -218.5t-80.5 -301t80.5 -301t218.5 -218.5t301 -80.5zM929 929q14 -10 23 -15l-2 -2l450 -212l-303 319l-97 481l-97 -481h1q0 -1 -2 -9t-2 -10q0 -42 29 -71z" />
207
+ <glyph unicode="&#xf470;" d="M600 1800h800q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1300 600v1000h-600v-1000h600zM800 1500h400l-400 -500v500z" />
208
+ <glyph unicode="&#xf471;" d="M400 1800h1200q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-1200q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1500 400v1200h-1000v-1200h1000zM600 1500h600l-600 -500v500z" />
209
+ <glyph unicode="&#xf472;" d="M300 1800h1400q41 0 70.5 -29.5t29.5 -70.5v-1000q0 -41 -29.5 -70.5t-70.5 -29.5h-500v-200h200q41 0 70.5 -29.5t29.5 -70.5v-100h-1000v100q0 41 29.5 70.5t70.5 29.5h200v200h-500q-41 0 -70.5 29.5t-29.5 70.5v1000q0 41 29.5 70.5t70.5 29.5zM1600 900v700h-1200 v-700h1200zM500 1500h900l-900 -400v400z" />
210
+ <glyph unicode="&#xf473;" d="M400 1700h1200q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-100l-500 -500v500h-600q-82 0 -141 59t-59 141v700q0 82 59 141t141 59zM1500 1500h-1100v-100h1100v100zM1600 1200h-1200v-100h1200v100zM1300 900h-900v-100h900v100z" />
211
+ <glyph unicode="&#xf474;" d="M1600 1600h200v-900h-1100v-300l-500 400l500 400v-300h900v700z" />
212
+ <glyph unicode="&#xf475;" d="M900 1400l-400 -400l400 -400l-100 -200l-600 600l600 600zM1100 600l400 400l-400 400l100 200l600 -600l-600 -600z" />
213
+ <glyph unicode="&#xf476;" d="M1500 1800h-746q-124 0 -228 -60q-105 -62 -165 -165q-61 -103 -61 -227t61 -227q60 -104 165 -164q103 -61 228 -61h43v-596q0 -40 29 -71q31 -29 71 -29t71 29q30 30 30 71v1200q0 42 29 71q31 29 71 29t71 -29q29 -31 29 -71v-1200q0 -41 30 -71q31 -29 71 -29t71 29 q29 31 29 71v1300h101q40 0 70 30q30 28 30 70q0 41 -30 71q-31 29 -70 29z" />
214
+ <glyph unicode="&#xf477;" d="M1000 1800q162 0 310.5 -63.5t255.5 -170.5t170.5 -255.5t63.5 -310.5t-63.5 -310.5t-170.5 -255.5t-255.5 -170.5t-310.5 -63.5t-310.5 63.5t-255.5 170.5t-170.5 255.5t-63.5 310.5t63.5 310.5t170.5 255.5t255.5 170.5t310.5 63.5zM1000 250q153 0 291.5 59.5t239 160 t160 239t59.5 291.5t-59.5 291.5t-160 239t-239 160t-291.5 59.5t-291.5 -59.5t-239 -160t-160 -239t-59.5 -291.5q0 -223 122 -410q41 -61 95 -117q104 -105 242 -164t291 -59zM1000 1674q137 0 262 -53.5t215 -143.5t143.5 -215t53.5 -262t-53.5 -262t-143.5 -215 t-215 -143.5t-262 -53.5q-206 0 -374 113q78 4 151 42t126 99q20 -58 80 -100t151 -42q130 0 240.5 88t136.5 212q29 127 -28 213t-182 86q-45 0 -96 -21t-90 -52l104 479q2 14 -3.5 21.5t-18.5 3.5q-56 -15 -227 -32q-18 -2 -24.5 -17t2 -29t26.5 -13q22 1 34.5 -1 t20.5 -10.5t10 -20t-1 -34.5t-8.5 -50t-14.5 -70q-1 -3 -1 -4l-54 -243q-57 93 -186 93q-46 0 -96.5 -21t-89.5 -52q100 461 103 479q3 13 -2.5 21t-18.5 4q-42 -11 -179 -26q94 109 226.5 170.5t282.5 61.5zM441 1377h6q26 1 39.5 -3t20.5 -15.5t5.5 -32.5t-8 -54.5 t-17.5 -81.5q-1 -2 -1 -3l-101 -463q-59 130 -59 276q0 207 115 377zM853 738q-23 -104 -82.5 -172t-143.5 -68q-55 0 -89 41t-17 116l34 167q15 64 69.5 107t114.5 43q82 0 109.5 -65t4.5 -169zM1380 738q-22 -104 -82 -172t-144 -68q-55 0 -89 41t-17 116l35 167 q15 64 69 107t114 43q82 0 109.5 -65t4.5 -169z" />
215
+ <glyph unicode="&#xf478;" d="M1800 1700v-200h-1600v200h1600zM1200 1300v-200h-1000v200h1000zM1800 1300v-200h-400v200h400zM800 900v-200h-600v200h600zM1800 900v-200h-800v200h800zM1400 500v-200h-1200v200h1200z" />
216
+ <glyph unicode="&#xf479;" d="M1100 1700v-400h-1000v400h1000zM1900 1700v-400h-700v400h700zM700 1200v-300h-600v300h600zM1900 1200v-300h-1100v300h1100zM900 800v-200h-800v200h800zM1900 800v-200h-900v200h900zM600 500v-100h-500v100h500zM1100 500v-100h-400v100h400zM1400 500v-100h-200 v100h200zM1900 500v-100h-400v100h400z" />
217
+ <glyph unicode="&#xf480;" d="M1900 1600v-200h-1800v200h1800zM200 1300h1600v-1000h-1600v1000zM1300 1000v100h-600v-100h600z" />
218
+ <glyph unicode="&#xf481;" d="M1190 1961l140 -140q50 -6 123.5 1.5t127 15t113 -4t97.5 -49.5t49.5 -97.5t4 -113t-15 -127t-1.5 -123.5l140 -140q29 -29 29 -70.5t-29 -70.5l-919 -920q-30 -29 -71.5 -29t-70.5 29l-778 778q-29 29 -29 70.5t29 71.5l920 919q29 29 70.5 29t70.5 -29zM1248 1736 l-58 -58l495 -495l58 58q-24 75 -15 182q3 47 9 92q11 73 9 123.5t-26 74.5t-74.5 26t-123.5 -9q-45 -6 -92 -9q-107 -9 -182 15zM1650 1643q29 -29 29 -71t-29 -71t-71 -29t-71 29t-29 71t29 71t71 29t71 -29zM978 1607l-71 -70l637 -637l70 71zM836 1466l-70 -71l636 -636 l71 70zM695 1324l-71 -70l637 -637l70 71zM554 1183l-71 -71l636 -636l71 71zM412 1042l-71 -71l637 -637l71 71z" />
219
+ <glyph unicode="&#xf482;" d="M1200 1100v600q0 83 -58.5 141.5t-141.5 58.5t-141.5 -59.5t-58.5 -140.5v-600q0 -82 59 -141t141 -59q84 0 142 59.5t58 140.5zM1600 1100q0 -221 -142.5 -388t-357.5 -203v-209h200q42 0 71 -29.5t29 -70.5t-29 -70.5t-71 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5 t29.5 70.5t70.5 29.5h200v209q-214 36 -357 203t-143 388q0 41 29.5 70.5t70.5 29.5q42 0 71 -29.5t29 -70.5q0 -166 117.5 -283t282.5 -117q166 0 283 117t117 283q0 41 29.5 70.5t70.5 29.5q42 0 71 -29.5t29 -70.5z" />
220
+ <glyph unicode="&#xf483;" d="M1000 1740q62 0 106 -44t44 -106t-44 -106.5t-106 -44.5t-106 44.5t-44 106.5t44 106t106 44zM340 1264q0 29 165 48t330 24l165 4q660 -11 660 -76q0 -29 -112 -64t-224 -56l-111 -20l59 -306q91 -515 47 -532q-17 -7 -56.5 44t-83 128.5t-84.5 156t-68 134.5l-27 56 l-96 -193q-177 -342 -222 -326q-17 14 -13 96.5t23 209t40.5 244.5t38.5 203l17 85q-448 75 -448 140z" />
221
+ <glyph unicode="&#xf484;" d="M1200 1500v300q0 41 -29.5 70.5t-70.5 29.5h-200q-41 0 -70.5 -29.5t-29.5 -70.5v-300q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM1000 1800q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1800 500v800q0 82 -59 141t-141 59h-300v-33q0 -69 -49 -118t-118 -49h-266q-69 0 -118 49t-49 118v33h-300q-82 0 -141 -59t-59 -141v-800q0 -82 59 -141t141 -59h1200q82 0 141 59t59 141zM1700 1100v-600h-1400v600h1400zM900 900q0 41 -14.5 70.5t-35.5 29.5 t-35.5 -29.5t-14.5 -70.5t14.5 -70.5t35.5 -29.5t35.5 29.5t14.5 70.5zM1200 900q0 41 -14.5 70.5t-35.5 29.5t-35.5 -29.5t-14.5 -70.5t14.5 -70.5t35.5 -29.5t35.5 29.5t14.5 70.5zM604 779q151 -79 396 -79t396 79q-16 -76 -129 -127.5t-267 -51.5t-267 51.5t-129 127.5z " />
222
+ <glyph unicode="&#xf485;" d="M19 1408q-22 -18 79 -142t212 -240l112 -115l79 79t184.5 185.5t249.5 256.5t232.5 247t179 206t45.5 89q-30 17 -274 -166.5t-474 -375.5l-229 -191q-4 3 -11.5 7t-32.5 18.5t-47.5 26.5t-57 30.5t-61.5 31t-61 27.5t-55 21t-43.5 10t-26.5 -5zM1542 1310l-315 -315 l-181 182l315 315q25 25 69.5 16t81.5 -47q38 -37 47 -81.5t-17 -69.5zM765 1138l88 109l876 -875l-116 -81q-49 -49 -163 -81t-208 -32h-377l-121 -121q-43 -43 -103 -43t-103 43t-43 103t43 104l121 120v376q0 94 29.5 212.5t76.5 165.5zM1470 752l315 315q25 26 69.5 17 t81.5 -47q38 -37 47 -81t-17 -69l-315 -316z" />
223
+ <glyph unicode="&#xf486;" d="M2000 1462l-101 -282v1q-78 28 -153 -8t-104 -114q-28 -78 7.5 -153t114.5 -103v-1l-101 -282l-1506 538l99 279q78 -28 153 7.5t103 113.5t-7.5 152.5t-113.5 102.5l102 287zM1455 1125q34 108 16.5 208.5t-87 183.5t-171.5 120q-156 55 -305.5 -16t-205.5 -226 q-34 -108 -16.5 -209t87 -184t171.5 -119q155 -55 305 16t206 226zM1199 1599q133 -48 197 -171l-4 2q-24 9 -46.5 -3.5t-31.5 -36.5q-10 -28 5 -91q9 -62 -6 -104q-9 -27 -65 -100l-74 -101l8 408l40 -11q14 -3 18 11t-10 18q-57 15 -92 28l-88 36q-7 3 -12 0t-7.5 -7.5 t-0.5 -10.5t8 -9q16 -8 34 -16l1 -163l-153 -196l8 411l40 -11q14 -3 17.5 11t-10.5 18q-56 15 -91 28q-3 1 -22 8q71 54 159 68t178 -16zM740 1381q25 73 78 127l4 -500q-72 72 -94.5 171.5t12.5 201.5zM1144 906l210 263q49 55 69 112q4 10 11 35q14 -90 -17 -177 q-33 -92 -106.5 -153.5t-166.5 -79.5zM1074 1228l2 -322q0 -4 1 -6q-60 0 -120 21q-49 18 -90 48zM1198 620l210 -75q18 -64 71 -104.5t120 -40.5h1v-300h-1600v296q83 0 141.5 58.5t58.5 141.5q0 82 -59 141t-141 59v304h105l-28 -80l428 -152q-105 -115 -105 -268 q0 -166 117 -283t283 -117t283 117t117 283q0 4 -1 10t-1 10zM545 853l148 -53q-11 -3 -10.5 -15t13.5 -13q18 -2 37 -3l56 -154l-78 -236l-131 390l41 3q9 1 12 8.5t-1 14.5t-13 7q-59 -5 -96 -5q-15 0 -23 1q19 29 45 55zM440 600q0 76 32 146l171 -470q-92 45 -147.5 132 t-55.5 192zM859 741l172 -62q12 -29 12 -61q0 -28 -28 -116l-35 -120zM1160 600q0 -98 -48.5 -181t-130.5 -130l110 318q7 20 14 46l52 -19q3 -17 3 -34zM698 255l108 314l111 -303q0 -1 0.5 -2.5t1.5 -2.5q-60 -21 -119 -21q-47 0 -102 15z" />
224
+ <glyph unicode="&#xf487;" d="M1000 288q240 101 420.5 265.5t283.5 355.5q97 183 106.5 349t-74.5 276q-144 181 -373 174q-99 -3 -194 -42.5t-169 -103.5q-74 64 -169 103.5t-194 42.5q-229 7 -373 -174q-84 -110 -74.5 -276t108.5 -349q101 -191 281.5 -355.5t420.5 -265.5z" />
225
+ <glyph unicode="&#xf488;" d="M1815 1406q66 -233 -2 -448q-31 -96 -91.5 -160.5t-138.5 -87.5q-16 -6 -40 -6q-6 -2 -18 -2q-6 -2 -22 -2h-680l222 -550q3 -18 -14 -34q-13 -16 -34 -16h-302q-21 0 -34 16q-17 17 -14 34l-100 550h-122l-2 2q-37 -4 -78 12.5t-76 49.5q-81 78 -106 188q-33 110 -2 220 q27 94 106 130l2 2l900 540q20 12 24 16q9 6 24 12q19 10 50 18q77 22 162 -4.5t160 -93.5q76 -68 135.5 -168t90.5 -218zM1557 808h-2q58 14 104 70q86 104 86 304q0 92 -28 198q-50 199 -178 324q-58 56 -123 80t-123 8q-122 -33 -170 -200q-48 -156 6 -372 q59 -212 180 -324q126 -119 248 -88zM1303 1516q30 6 62 -4q66 -28 102 -100q42 -84 42 -178q0 -44 -12 -80q-30 -81 -86 -94q-26 -8 -57.5 3.5t-56.5 36.5q-58 58 -78 150q-24 83 2 172q10 35 33 60.5t49 33.5z" />
226
+ <glyph unicode="&#xf489;" d="M200 1800h1600v-400h-1600v400zM200 800v400h400v-400h-400zM800 1000v200h400v-200h-400zM1400 700v500h400v-500h-400zM800 200v600h400v-600h-400zM200 200v400h400v-400h-400zM1400 200v300h400v-300h-400z" />
227
+ <glyph unicode="&#xf490;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1100 600v300q0 40 -29 71q-31 29 -71 29h-300q-40 0 -71 -29q-29 -31 -29 -71v-300q0 -40 29 -71q31 -29 71 -29h300q40 0 71 29q29 31 29 71zM1400 500v500l-200 -200v-100z" />
228
+ <glyph unicode="&#xf491;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM500 1700v-100h600v100h-600zM1200 1400h300l-300 300v-300zM500 1500v-100h600v100h-600zM1500 1200v100h-1000v-100h1000zM1500 1000v100h-1000v-100h1000zM1500 800v100h-1000v-100h1000zM1100 600v100h-600v-100h600z" />
229
+ <glyph unicode="&#xf492;" d="M1700 1700v200h-1500v-200h1500zM1700 1300v200h-1500v-200h1500zM1000 900v200h-800v-200h800zM1745 1096l-600 -112q-18 -2 -29 -13q-16 -13 -16 -37v-459q-31 14 -93 14q-81 0 -138 -57q-56 -56 -56 -138q0 -81 56 -137q57 -57 138 -57q73 0 129 48q56 49 65 119v495 l499 111v-348q-42 19 -83 19q-92 0 -149 -57q-57 -56 -57 -137q0 -80 57 -137t138 -57q80 0 137 57t57 137v690q0 25 -16 41q-16 18 -39 15zM800 500v200h-600v-200h600zM600 100v200h-400v-200h400z" />
230
+ <glyph unicode="&#xf493;" d="M1700 1700v200h-1500v-200h1500zM1700 1300v200h-1500v-200h1500zM600 900v200h-400v-200h400zM800 1100h900q41 0 70.5 -29.5t29.5 -70.5v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5zM1100 400l333 200 l-333 200v-400zM600 500v200h-400v-200h400zM600 100v200h-400v-200h400z" />
231
+ <glyph unicode="&#xf494;" d="M900 1400l-400 -400l400 -400l-100 -200l-600 600l600 600zM1100 600l400 400l-400 400l100 200l600 -600l-600 -600z" />
232
+ <glyph unicode="&#xf495;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1100 1400v300h-600v-300h600zM800 1200v100h-300v-100h300zM1100 1200v100h-200v-100h200zM1500 1200v100h-300v-100h300zM800 1000v100h-300v-100h300zM1100 1000v100h-200v-100h200zM1500 1000v100h-300v-100h300zM800 800 v100h-300v-100h300zM1100 800v100h-200v-100h200zM1500 800v100h-300v-100h300zM800 600v100h-300v-100h300zM1100 600v100h-200v-100h200zM1500 600v100h-300v-100h300zM800 400v100h-300v-100h300zM1100 400v100h-200v-100h200z" />
233
+ <glyph unicode="&#xf496;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1400 600v600h-800v-600h300l-100 -200h100l100 200l100 -200h100l-100 200h300zM800 900q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5z M1300 1100v-200h-300v200h300zM1300 800v-100h-600v100h600z" />
234
+ <glyph unicode="&#xf497;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM500 1700v-100h600v100h-600zM1200 1400h300l-300 300v-300zM500 1500v-100h600v100h-600zM1500 1200v100h-1000v-100h1000zM500 1100v-100h400v100h-400zM1500 800v300h-500v-300h500zM500 900v-100h400v100h-400zM1500 600 v100h-1000v-100h1000zM1200 400v100h-700v-100h700z" />
235
+ <glyph unicode="&#xf498;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300z" />
236
+ <glyph unicode="&#xf499;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM900 700l-200 200l200 200l-100 100l-300 -300l300 -300zM1200 600l300 300l-300 300l-100 -100l200 -200l-200 -200z" />
237
+ <glyph unicode="&#xf500;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1300 674v517q0 17 -12 29q-10 12 -27 10q-397 -71 -425 -78q-36 -7 -36 -52v-337q-16 7 -60 7q-57 0 -96 -39q-40 -42 -40 -96q0 -55 40 -95q39 -40 96 -40q65 0 96 26q64 57 64 112v332l300 60 v-230q-87 26 -144 -31q-39 -39 -39 -95t39 -96q40 -39 108 -39q57 0 96 39q40 42 40 96z" />
238
+ <glyph unicode="&#xf501;" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM800 1650v-200l180 100zM1100 1500l-180 -100l180 -100v200zM800 1350v-200l180 100zM1100 1200l-180 -100l180 -100v200zM800 1050v-200l180 100zM1100 900l-180 -100l180 -100v200zM950 300 q64 0 111.5 48.5t38.5 114.5q-2 17 -14.5 57t-23.5 72l-11 32l-199 110q-45 -195 -52 -271q-5 -59 42 -111t108 -52zM950 539q32 0 54 -22.5t22 -53.5q0 -32 -22 -54.5t-54 -22.5t-54 22.5t-22 54.5q0 31 22 53.5t54 22.5z" />
239
+ <glyph unicode="&#xf502;" d="M1580 1580q157 -158 213 -369t0 -422t-213 -369q-158 -157 -369 -213t-422 0t-369 213q-157 158 -213 369t0 422t213 369q158 157 369 213t422 0t369 -213zM1150 450v400h400v300h-400v400h-300v-400h-400v-300h400v-400h300z" />
240
+ <glyph unicode="&#xf503;" d="M1800 1399l-400 -299v200h-400l-500 -800h-300v200h200l500 800h500v200zM200 1500h300l115 -217l-112 -180l-103 197h-200v200zM1800 599l-400 -299v200h-500l-115 217l112 180l103 -197h400v200z" />
241
+ <glyph unicode="&#xf504;" d="M900 1700h800v-800l-200 100v308l-560 -559l-141 141l609 610h-408zM1200 500v300l200 200v-700h-1100v1100h800l-200 -200h-400v-700h700z" />
242
+ <glyph unicode="&#xf506;" d="M1575 1325l225 375v-1400l-225 375l125 125h-400v-400l125 125l375 -225h-1600l375 225l125 -125v400h-400l125 -125l-225 -375v1400l225 -375l-125 -125h400v400l-125 -125l-375 225h1600l-375 -225l-125 125v-400h400z" />
243
+ <glyph unicode="&#xf507;" d="M1900 1000q0 183 -71.5 349.5t-192 287t-287 192t-349.5 71.5t-349.5 -71.5t-287 -192t-192 -287t-71.5 -349.5t71.5 -349.5t192 -287t287 -192t349.5 -71.5t349.5 71.5t287 192t192 287t71.5 349.5zM1000 1740q62 0 106 -44t44 -106t-44 -106.5t-106 -44.5t-106 44.5 t-44 106.5t44 106t106 44zM340 1264q0 29 165 48t330 24l165 4q660 -11 660 -76q0 -29 -112 -64t-224 -56l-111 -20l59 -306q91 -515 47 -532q-17 -7 -56.5 44t-83 128.5t-84.5 156t-68 134.5l-27 56l-96 -193q-177 -342 -222 -326q-17 14 -13 96.5t23 209t40.5 244.5 t38.5 203l17 85q-448 75 -448 140z" />
244
+ <glyph unicode="&#xf508;" d="M1500 1600h300v-1500h-1600v1500h300v100q0 60 44 106q44 44 106 44t106 -44q44 -46 44 -106v-100h400v100q0 60 44 106q44 44 106 44t106 -44q44 -46 44 -106v-100zM600 1700v-250q0 -21 15 -36q14 -14 35 -14t35 14q15 15 15 36v250q0 22 -15 35q-13 15 -35 15t-35 -15 q-15 -13 -15 -35zM1300 1700v-250q0 -20 14 -36q16 -14 36 -14t36 14q14 16 14 36v250q0 21 -14 35q-15 15 -36 15t-36 -15q-14 -14 -14 -35zM1700 200v1000h-1400v-1000h1400zM700 1100v-200h-200v200h200zM900 1100h200v-200h-200v200zM1300 900v200h200v-200h-200z M700 800v-200h-200v200h200zM900 800h200v-200h-200v200zM1300 600v200h200v-200h-200zM700 500v-200h-200v200h200zM1100 300h-200v200h200v-200zM1500 300h-200v200h200v-200z" />
245
+ <glyph unicode="&#xf509;" d="M200 1900h1600q41 0 70.5 -29.5t29.5 -70.5v-1600q0 -41 -29.5 -70.5t-70.5 -29.5h-1600q-41 0 -70.5 29.5t-29.5 70.5v1600q0 41 29.5 70.5t70.5 29.5zM901 1101v600h-601v-600h601zM1701 1101v600h-600v-600h600zM901 300v600h-601v-600h601zM1701 300v600h-600v-600 h600z" />
246
+ <glyph unicode="&#xf510;" d="M100 1683v-1483h1800v1400h-1100v83q0 48 -35 83q-34 34 -83 34h-464q-49 0 -83 -34q-35 -34 -35 -83zM1000 1400v-200h-700v200h700zM1700 1400v-1000h-500v1000h500zM1000 1000v-200h-700v200h700zM1000 600v-200h-700v200h700z" />
247
+ <glyph unicode="&#xf511;" d="M200 157q28 -27 94 -18.5t154 38t194.5 81.5t215 113t215 131.5t194.5 136.5t154 129.5t93 109.5q36 60 23.5 137.5t-58 155t-117.5 151.5q32 21 66.5 21t64.5 -17.5t62.5 -41.5t61 -50.5t59.5 -46t58 -26.5t57 8q46 24 68.5 85.5t1.5 106.5q-12 26 -36.5 45.5 t-47.5 30.5t-64 20t-63 12t-70 7.5t-61 5.5q36 9 80 27.5t92 47t80.5 68.5t33.5 82q3 69 -66.5 131.5t-138.5 54.5q-25 -3 -47 -14t-40 -32.5t-31.5 -41t-27.5 -53t-22 -52.5t-20.5 -56.5t-17.5 -50.5q-16 223 -98 295q-55 43 -106 38t-88 -46.5t-38 -96.5q-1 -31 19 -62.5 t49 -56t60.5 -54.5t53 -57t27 -63.5t-16.5 -73.5q-78 60 -157.5 96.5t-155.5 44t-133 -26.5q-70 -45 -163 -169q168 -178 309 -272q15 -11 18.5 -29t-7.5 -33q-10 -16 -28.5 -19.5t-33.5 7.5q-138 94 -310 271q-71 -105 -134 -223q157 -158 279 -241q15 -11 18 -29t-7 -33 q-10 -16 -28.5 -19.5t-34.5 7.5q-117 80 -271 232q-143 -282 -212 -524t-5 -299z" />
248
+ <glyph horiz-adv-x="600" />
249
+ </font>
250
+ </defs></svg>
@@ -0,0 +1,4006 @@
1
+ <?php
2
+ /**
3
+ * Main WordPress Formatting API.
4
+ *
5
+ * Handles many functions for formatting output.
6
+ *
7
+ * @package WordPress
8
+ */
9
+
10
+ /**
11
+ * Replaces common plain text characters into formatted entities
12
+ *
13
+ * As an example,
14
+ * <code>
15
+ * 'cause today's effort makes it worth tomorrow's "holiday"...
16
+ * </code>
17
+ * Becomes:
18
+ * <code>
19
+ * &#8217;cause today&#8217;s effort makes it worth tomorrow&#8217;s &#8220;holiday&#8221;&#8230;
20
+ * </code>
21
+ * Code within certain html blocks are skipped.
22
+ *
23
+ * @since 0.71
24
+ * @uses $wp_cockneyreplace Array of formatted entities for certain common phrases
25
+ *
26
+ * @param string $text The text to be formatted
27
+ * @param bool $reset Set to true for unit testing. Translated patterns will reset.
28
+ * @return string The string replaced with html entities
29
+ */
30
+ function wptexturize($text, $reset = false) {
31
+ global $wp_cockneyreplace;
32
+ static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
33
+ $default_no_texturize_tags, $default_no_texturize_shortcodes, $run_texturize = true;
34
+
35
+ // If there's nothing to do, just stop.
36
+ if ( empty( $text ) || false === $run_texturize ) {
37
+ return $text;
38
+ }
39
+
40
+ // Set up static variables. Run once only.
41
+ if ( $reset || ! isset( $static_characters ) ) {
42
+ /**
43
+ * Filter whether to skip running wptexturize().
44
+ *
45
+ * Passing false to the filter will effectively short-circuit wptexturize().
46
+ * returning the original text passed to the function instead.
47
+ *
48
+ * The filter runs only once, the first time wptexturize() is called.
49
+ *
50
+ * @since 4.0.0
51
+ *
52
+ * @see wptexturize()
53
+ *
54
+ * @param bool $run_texturize Whether to short-circuit wptexturize().
55
+ */
56
+ $run_texturize = apply_filters( 'run_wptexturize', $run_texturize );
57
+ if ( false === $run_texturize ) {
58
+ return $text;
59
+ }
60
+
61
+ /* translators: opening curly double quote */
62
+ $opening_quote = _x( '&#8220;', 'opening curly double quote' );
63
+ /* translators: closing curly double quote */
64
+ $closing_quote = _x( '&#8221;', 'closing curly double quote' );
65
+
66
+ /* translators: apostrophe, for example in 'cause or can't */
67
+ $apos = _x( '&#8217;', 'apostrophe' );
68
+
69
+ /* translators: prime, for example in 9' (nine feet) */
70
+ $prime = _x( '&#8242;', 'prime' );
71
+ /* translators: double prime, for example in 9" (nine inches) */
72
+ $double_prime = _x( '&#8243;', 'double prime' );
73
+
74
+ /* translators: opening curly single quote */
75
+ $opening_single_quote = _x( '&#8216;', 'opening curly single quote' );
76
+ /* translators: closing curly single quote */
77
+ $closing_single_quote = _x( '&#8217;', 'closing curly single quote' );
78
+
79
+ /* translators: en dash */
80
+ $en_dash = _x( '&#8211;', 'en dash' );
81
+ /* translators: em dash */
82
+ $em_dash = _x( '&#8212;', 'em dash' );
83
+
84
+ $default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');
85
+ $default_no_texturize_shortcodes = array('code');
86
+
87
+ // if a plugin has provided an autocorrect array, use it
88
+ if ( isset($wp_cockneyreplace) ) {
89
+ $cockney = array_keys($wp_cockneyreplace);
90
+ $cockneyreplace = array_values($wp_cockneyreplace);
91
+ } elseif ( "'" != $apos ) { // Only bother if we're doing a replacement.
92
+ $cockney = array( "'tain't", "'twere", "'twas", "'tis", "'twill", "'til", "'bout", "'nuff", "'round", "'cause" );
93
+ $cockneyreplace = array( $apos . "tain" . $apos . "t", $apos . "twere", $apos . "twas", $apos . "tis", $apos . "twill", $apos . "til", $apos . "bout", $apos . "nuff", $apos . "round", $apos . "cause" );
94
+ } else {
95
+ $cockney = $cockneyreplace = array();
96
+ }
97
+
98
+ $static_characters = array_merge( array( '...', '``', '\'\'', ' (tm)' ), $cockney );
99
+ $static_replacements = array_merge( array( '&#8230;', $opening_quote, $closing_quote, ' &#8482;' ), $cockneyreplace );
100
+
101
+
102
+ // Pattern-based replacements of characters.
103
+ // Sort the remaining patterns into several arrays for performance tuning.
104
+ $dynamic_characters = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
105
+ $dynamic_replacements = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
106
+ $dynamic = array();
107
+ $spaces = wp_spaces_regexp();
108
+
109
+ // '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation.
110
+ if ( "'" !== $apos || "'" !== $closing_single_quote ) {
111
+ $dynamic[ '/\'(\d\d)\'(?=\Z|[.,)}\-\]]|&gt;|' . $spaces . ')/' ] = $apos . '$1' . $closing_single_quote;
112
+ }
113
+ if ( "'" !== $apos || '"' !== $closing_quote ) {
114
+ $dynamic[ '/\'(\d\d)"(?=\Z|[.,)}\-\]]|&gt;|' . $spaces . ')/' ] = $apos . '$1' . $closing_quote;
115
+ }
116
+
117
+ // '99 '99s '99's (apostrophe) But never '9 or '99% or '999 or '99.0.
118
+ if ( "'" !== $apos ) {
119
+ $dynamic[ '/\'(?=\d\d(?:\Z|(?![%\d]|[.,]\d)))/' ] = $apos;
120
+ }
121
+
122
+ // Quoted Numbers like '0.42'
123
+ if ( "'" !== $opening_single_quote && "'" !== $closing_single_quote ) {
124
+ $dynamic[ '/(?<=\A|' . $spaces . ')\'(\d[.,\d]*)\'/' ] = $opening_single_quote . '$1' . $closing_single_quote;
125
+ }
126
+
127
+ // Single quote at start, or preceded by (, {, <, [, ", -, or spaces.
128
+ if ( "'" !== $opening_single_quote ) {
129
+ $dynamic[ '/(?<=\A|[([{"\-]|&lt;|' . $spaces . ')\'/' ] = $opening_single_quote;
130
+ }
131
+
132
+ // Apostrophe in a word. No spaces, double apostrophes, or other punctuation.
133
+ if ( "'" !== $apos ) {
134
+ $dynamic[ '/(?<!' . $spaces . ')\'(?!\Z|[.,:;"\'(){}[\]\-]|&[lg]t;|' . $spaces . ')/' ] = $apos;
135
+ }
136
+
137
+ // 9' (prime)
138
+ if ( "'" !== $prime ) {
139
+ $dynamic[ '/(?<=\d)\'/' ] = $prime;
140
+ }
141
+
142
+ // Single quotes followed by spaces or ending punctuation.
143
+ if ( "'" !== $closing_single_quote ) {
144
+ $dynamic[ '/\'(?=\Z|[.,)}\-\]]|&gt;|' . $spaces . ')/' ] = $closing_single_quote;
145
+ }
146
+
147
+ $dynamic_characters['apos'] = array_keys( $dynamic );
148
+ $dynamic_replacements['apos'] = array_values( $dynamic );
149
+ $dynamic = array();
150
+
151
+ // Quoted Numbers like "42"
152
+ if ( '"' !== $opening_quote && '"' !== $closing_quote ) {
153
+ $dynamic[ '/(?<=\A|' . $spaces . ')"(\d[.,\d]*)"/' ] = $opening_quote . '$1' . $closing_quote;
154
+ }
155
+
156
+ // 9" (double prime)
157
+ if ( '"' !== $double_prime ) {
158
+ $dynamic[ '/(?<=\d)"/' ] = $double_prime;
159
+ }
160
+
161
+ // Double quote at start, or preceded by (, {, <, [, -, or spaces, and not followed by spaces.
162
+ if ( '"' !== $opening_quote ) {
163
+ $dynamic[ '/(?<=\A|[([{\-]|&lt;|' . $spaces . ')"(?!' . $spaces . ')/' ] = $opening_quote;
164
+ }
165
+
166
+ // Any remaining double quotes.
167
+ if ( '"' !== $closing_quote ) {
168
+ $dynamic[ '/"/' ] = $closing_quote;
169
+ }
170
+
171
+ $dynamic_characters['quote'] = array_keys( $dynamic );
172
+ $dynamic_replacements['quote'] = array_values( $dynamic );
173
+ $dynamic = array();
174
+
175
+ // Dashes and spaces
176
+ $dynamic[ '/---/' ] = $em_dash;
177
+ $dynamic[ '/(?<=' . $spaces . ')--(?=' . $spaces . ')/' ] = $em_dash;
178
+ $dynamic[ '/(?<!xn)--/' ] = $en_dash;
179
+ $dynamic[ '/(?<=' . $spaces . ')-(?=' . $spaces . ')/' ] = $en_dash;
180
+
181
+ $dynamic_characters['dash'] = array_keys( $dynamic );
182
+ $dynamic_replacements['dash'] = array_values( $dynamic );
183
+ }
184
+
185
+ // Must do this every time in case plugins use these filters in a context sensitive manner
186
+ /**
187
+ * Filter the list of HTML elements not to texturize.
188
+ *
189
+ * @since 2.8.0
190
+ *
191
+ * @param array $default_no_texturize_tags An array of HTML element names.
192
+ */
193
+ $no_texturize_tags = apply_filters( 'no_texturize_tags', $default_no_texturize_tags );
194
+ /**
195
+ * Filter the list of shortcodes not to texturize.
196
+ *
197
+ * @since 2.8.0
198
+ *
199
+ * @param array $default_no_texturize_shortcodes An array of shortcode names.
200
+ */
201
+ $no_texturize_shortcodes = apply_filters( 'no_texturize_shortcodes', $default_no_texturize_shortcodes );
202
+
203
+ $no_texturize_tags_stack = array();
204
+ $no_texturize_shortcodes_stack = array();
205
+
206
+ // Look for shortcodes and HTML elements.
207
+
208
+ $comment_regex =
209
+ '!' // Start of comment, after the <.
210
+ . '(?:' // Unroll the loop: Consume everything until --> is found.
211
+ . '-(?!->)' // Dash not followed by end of comment.
212
+ . '[^\-]*+' // Consume non-dashes.
213
+ . ')*+' // Loop possessively.
214
+ . '(?:-->)?'; // End of comment. If not found, match all input.
215
+
216
+ $shortcode_regex =
217
+ '\[' // Find start of shortcode.
218
+ . '[\/\[]?' // Shortcodes may begin with [/ or [[
219
+ . '[^\s\/\[\]]' // No whitespace before name.
220
+ . '[^\[\]]*+' // Shortcodes do not contain other shortcodes. Possessive critical.
221
+ . '\]' // Find end of shortcode.
222
+ . '\]?'; // Shortcodes may end with ]]
223
+
224
+ $regex =
225
+ '/(' // Capture the entire match.
226
+ . '<' // Find start of element.
227
+ . '(?(?=!--)' // Is this a comment?
228
+ . $comment_regex // Find end of comment.
229
+ . '|'
230
+ . '[^>]+>' // Find end of element.
231
+ . ')'
232
+ . '|'
233
+ . $shortcode_regex // Find shortcodes.
234
+ . ')/s';
235
+
236
+ $textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
237
+
238
+ foreach ( $textarr as &$curl ) {
239
+ // Only call _wptexturize_pushpop_element if $curl is a delimiter.
240
+ $first = $curl[0];
241
+ if ( '<' === $first && '<!--' === substr( $curl, 0, 4 ) ) {
242
+ // This is an HTML comment delimeter.
243
+
244
+ continue;
245
+
246
+ } elseif ( '<' === $first && '>' === substr( $curl, -1 ) ) {
247
+ // This is an HTML element delimiter.
248
+
249
+ _wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
250
+
251
+ } elseif ( '' === trim( $curl ) ) {
252
+ // This is a newline between delimiters. Performance improves when we check this.
253
+
254
+ continue;
255
+
256
+ } elseif ( '[' === $first && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
257
+ // This is a shortcode delimiter.
258
+
259
+ if ( '[[' !== substr( $curl, 0, 2 ) && ']]' !== substr( $curl, -2 ) ) {
260
+ // Looks like a normal shortcode.
261
+ _wptexturize_pushpop_element( $curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes );
262
+ } else {
263
+ // Looks like an escaped shortcode.
264
+ // Do not texturize.
265
+ // Do not push to the shortcodes stack.
266
+ continue;
267
+ }
268
+
269
+ } elseif ( empty( $no_texturize_shortcodes_stack ) && empty( $no_texturize_tags_stack ) ) {
270
+ // This is neither a delimiter, nor is this content inside of no_texturize pairs. Do texturize.
271
+
272
+ $curl = str_replace( $static_characters, $static_replacements, $curl );
273
+
274
+ if ( false !== strpos( $curl, "'" ) ) {
275
+ $curl = preg_replace( $dynamic_characters['apos'], $dynamic_replacements['apos'], $curl );
276
+ }
277
+ if ( false !== strpos( $curl, '"' ) ) {
278
+ $curl = preg_replace( $dynamic_characters['quote'], $dynamic_replacements['quote'], $curl );
279
+ }
280
+ if ( false !== strpos( $curl, '-' ) ) {
281
+ $curl = preg_replace( $dynamic_characters['dash'], $dynamic_replacements['dash'], $curl );
282
+ }
283
+
284
+ // 9x9 (times), but never 0x9999
285
+ if ( 1 === preg_match( '/(?<=\d)x-?\d/', $curl ) ) {
286
+ // Searching for a digit is 10 times more expensive than for the x, so we avoid doing this one!
287
+ $curl = preg_replace( '/\b(\d(?(?<=0)[\d\.,]+|[\d\.,]*))x(-?\d[\d\.,]*)\b/', '$1&#215;$2', $curl );
288
+ }
289
+ }
290
+ }
291
+ $text = implode( '', $textarr );
292
+
293
+ // Replace each & with &#038; unless it already looks like an entity.
294
+ $text = preg_replace('/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&#038;', $text);
295
+
296
+ return $text;
297
+ }
298
+
299
+ /**
300
+ * Search for disabled element tags. Push element to stack on tag open and pop
301
+ * on tag close.
302
+ *
303
+ * Assumes first char of $text is tag opening and last char is tag closing.
304
+ * Assumes second char of $text is optionally '/' to indicate closing as in </html>.
305
+ *
306
+ * @since 2.9.0
307
+ * @access private
308
+ *
309
+ * @param string $text Text to check. Must be a tag like <html> or [shortcode].
310
+ * @param array $stack List of open tag elements.
311
+ * @param array $disabled_elements The tag names to match against. Spaces are not allowed in tag names.
312
+ */
313
+ function _wptexturize_pushpop_element($text, &$stack, $disabled_elements) {
314
+ // Is it an opening tag or closing tag?
315
+ if ( '/' !== $text[1] ) {
316
+ $opening_tag = true;
317
+ $name_offset = 1;
318
+ } elseif ( 0 == count( $stack ) ) {
319
+ // Stack is empty. Just stop.
320
+ return;
321
+ } else {
322
+ $opening_tag = false;
323
+ $name_offset = 2;
324
+ }
325
+
326
+ // Parse out the tag name.
327
+ $space = strpos( $text, ' ' );
328
+ if ( false === $space ) {
329
+ $space = -1;
330
+ } else {
331
+ $space -= $name_offset;
332
+ }
333
+ $tag = substr( $text, $name_offset, $space );
334
+
335
+ // Handle disabled tags.
336
+ if ( in_array( $tag, $disabled_elements ) ) {
337
+ if ( $opening_tag ) {
338
+ /*
339
+ * This disables texturize until we find a closing tag of our type
340
+ * (e.g. <pre>) even if there was invalid nesting before that
341
+ *
342
+ * Example: in the case <pre>sadsadasd</code>"baba"</pre>
343
+ * "baba" won't be texturize
344
+ */
345
+
346
+ array_push( $stack, $tag );
347
+ } elseif ( end( $stack ) == $tag ) {
348
+ array_pop( $stack );
349
+ }
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Replaces double line-breaks with paragraph elements.
355
+ *
356
+ * A group of regex replaces used to identify text formatted with newlines and
357
+ * replace double line-breaks with HTML paragraph tags. The remaining
358
+ * line-breaks after conversion become <<br />> tags, unless $br is set to '0'
359
+ * or 'false'.
360
+ *
361
+ * @since 0.71
362
+ *
363
+ * @param string $pee The text which has to be formatted.
364
+ * @param bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.
365
+ * @return string Text which has been converted into correct paragraph tags.
366
+ */
367
+ function wpautop($pee, $br = true) {
368
+ $pre_tags = array();
369
+
370
+ if ( trim($pee) === '' )
371
+ return '';
372
+
373
+ $pee = $pee . "\n"; // just to make things a little easier, pad the end
374
+
375
+ if ( strpos($pee, '<pre') !== false ) {
376
+ $pee_parts = explode( '</pre>', $pee );
377
+ $last_pee = array_pop($pee_parts);
378
+ $pee = '';
379
+ $i = 0;
380
+
381
+ foreach ( $pee_parts as $pee_part ) {
382
+ $start = strpos($pee_part, '<pre');
383
+
384
+ // Malformed html?
385
+ if ( $start === false ) {
386
+ $pee .= $pee_part;
387
+ continue;
388
+ }
389
+
390
+ $name = "<pre wp-pre-tag-$i></pre>";
391
+ $pre_tags[$name] = substr( $pee_part, $start ) . '</pre>';
392
+
393
+ $pee .= substr( $pee_part, 0, $start ) . $name;
394
+ $i++;
395
+ }
396
+
397
+ $pee .= $last_pee;
398
+ }
399
+
400
+ $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
401
+ // Space things out a little
402
+ $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|details|menu|summary)';
403
+ $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
404
+ $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
405
+ $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
406
+
407
+ if ( strpos( $pee, '<option' ) !== false ) {
408
+ // no P/BR around option
409
+ $pee = preg_replace( '|\s*<option|', '<option', $pee );
410
+ $pee = preg_replace( '|</option>\s*|', '</option>', $pee );
411
+ }
412
+
413
+ if ( strpos( $pee, '</object>' ) !== false ) {
414
+ // no P/BR around param and embed
415
+ $pee = preg_replace( '|(<object[^>]*>)\s*|', '$1', $pee );
416
+ $pee = preg_replace( '|\s*</object>|', '</object>', $pee );
417
+ $pee = preg_replace( '%\s*(</?(?:param|embed)[^>]*>)\s*%', '$1', $pee );
418
+ }
419
+
420
+ if ( strpos( $pee, '<source' ) !== false || strpos( $pee, '<track' ) !== false ) {
421
+ // no P/BR around source and track
422
+ $pee = preg_replace( '%([<\[](?:audio|video)[^>\]]*[>\]])\s*%', '$1', $pee );
423
+ $pee = preg_replace( '%\s*([<\[]/(?:audio|video)[>\]])%', '$1', $pee );
424
+ $pee = preg_replace( '%\s*(<(?:source|track)[^>]*>)\s*%', '$1', $pee );
425
+ }
426
+
427
+ $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
428
+ // make paragraphs, including one at the end
429
+ $pees = preg_split('/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
430
+ $pee = '';
431
+
432
+ foreach ( $pees as $tinkle ) {
433
+ $pee .= '<p>' . trim($tinkle, "\n") . "</p>\n";
434
+ }
435
+
436
+ $pee = preg_replace('|<p>\s*</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
437
+ $pee = preg_replace('!<p>([^<]+)</(div|address|form)>!', "<p>$1</p></$2>", $pee);
438
+ $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
439
+ $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
440
+ $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
441
+ $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
442
+ $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
443
+ $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
444
+
445
+ if ( $br ) {
446
+ $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
447
+ $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
448
+ $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
449
+ }
450
+
451
+ $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
452
+ $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
453
+ $pee = preg_replace( "|\n</p>$|", '</p>', $pee );
454
+
455
+ if ( !empty($pre_tags) )
456
+ $pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee);
457
+
458
+ return $pee;
459
+ }
460
+
461
+ /**
462
+ * Newline preservation help function for wpautop
463
+ *
464
+ * @since 3.1.0
465
+ * @access private
466
+ *
467
+ * @param array $matches preg_replace_callback matches array
468
+ * @return string
469
+ */
470
+ function _autop_newline_preservation_helper( $matches ) {
471
+ return str_replace("\n", "<WPPreserveNewline />", $matches[0]);
472
+ }
473
+
474
+ /**
475
+ * Don't auto-p wrap shortcodes that stand alone
476
+ *
477
+ * Ensures that shortcodes are not wrapped in <<p>>...<</p>>.
478
+ *
479
+ * @since 2.9.0
480
+ *
481
+ * @param string $pee The content.
482
+ * @return string The filtered content.
483
+ */
484
+ function shortcode_unautop( $pee ) {
485
+ global $shortcode_tags;
486
+
487
+ if ( empty( $shortcode_tags ) || !is_array( $shortcode_tags ) ) {
488
+ return $pee;
489
+ }
490
+
491
+ $tagregexp = join( '|', array_map( 'preg_quote', array_keys( $shortcode_tags ) ) );
492
+ $spaces = wp_spaces_regexp();
493
+
494
+ $pattern =
495
+ '/'
496
+ . '<p>' // Opening paragraph
497
+ . '(?:' . $spaces . ')*+' // Optional leading whitespace
498
+ . '(' // 1: The shortcode
499
+ . '\\[' // Opening bracket
500
+ . "($tagregexp)" // 2: Shortcode name
501
+ . '(?![\\w-])' // Not followed by word character or hyphen
502
+ // Unroll the loop: Inside the opening shortcode tag
503
+ . '[^\\]\\/]*' // Not a closing bracket or forward slash
504
+ . '(?:'
505
+ . '\\/(?!\\])' // A forward slash not followed by a closing bracket
506
+ . '[^\\]\\/]*' // Not a closing bracket or forward slash
507
+ . ')*?'
508
+ . '(?:'
509
+ . '\\/\\]' // Self closing tag and closing bracket
510
+ . '|'
511
+ . '\\]' // Closing bracket
512
+ . '(?:' // Unroll the loop: Optionally, anything between the opening and closing shortcode tags
513
+ . '[^\\[]*+' // Not an opening bracket
514
+ . '(?:'
515
+ . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
516
+ . '[^\\[]*+' // Not an opening bracket
517
+ . ')*+'
518
+ . '\\[\\/\\2\\]' // Closing shortcode tag
519
+ . ')?'
520
+ . ')'
521
+ . ')'
522
+ . '(?:' . $spaces . ')*+' // optional trailing whitespace
523
+ . '<\\/p>' // closing paragraph
524
+ . '/s';
525
+
526
+ return preg_replace( $pattern, '$1', $pee );
527
+ }
528
+
529
+ /**
530
+ * Checks to see if a string is utf8 encoded.
531
+ *
532
+ * NOTE: This function checks for 5-Byte sequences, UTF8
533
+ * has Bytes Sequences with a maximum length of 4.
534
+ *
535
+ * @author bmorel at ssi dot fr (modified)
536
+ * @since 1.2.1
537
+ *
538
+ * @param string $str The string to be checked
539
+ * @return bool True if $str fits a UTF-8 model, false otherwise.
540
+ */
541
+ function seems_utf8($str) {
542
+ mbstring_binary_safe_encoding();
543
+ $length = strlen($str);
544
+ reset_mbstring_encoding();
545
+ for ($i=0; $i < $length; $i++) {
546
+ $c = ord($str[$i]);
547
+ if ($c < 0x80) $n = 0; # 0bbbbbbb
548
+ elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
549
+ elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
550
+ elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
551
+ elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
552
+ elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
553
+ else return false; # Does not match any model
554
+ for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
555
+ if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
556
+ return false;
557
+ }
558
+ }
559
+ return true;
560
+ }
561
+
562
+ /**
563
+ * Converts a number of special characters into their HTML entities.
564
+ *
565
+ * Specifically deals with: &, <, >, ", and '.
566
+ *
567
+ * $quote_style can be set to ENT_COMPAT to encode " to
568
+ * &quot;, or ENT_QUOTES to do both. Default is ENT_NOQUOTES where no quotes are encoded.
569
+ *
570
+ * @since 1.2.2
571
+ * @access private
572
+ *
573
+ * @param string $string The text which is to be encoded.
574
+ * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
575
+ * @param string $charset Optional. The character encoding of the string. Default is false.
576
+ * @param boolean $double_encode Optional. Whether to encode existing html entities. Default is false.
577
+ * @return string The encoded text with HTML entities.
578
+ */
579
+ function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
580
+ $string = (string) $string;
581
+
582
+ if ( 0 === strlen( $string ) )
583
+ return '';
584
+
585
+ // Don't bother if there are no specialchars - saves some processing
586
+ if ( ! preg_match( '/[&<>"\']/', $string ) )
587
+ return $string;
588
+
589
+ // Account for the previous behaviour of the function when the $quote_style is not an accepted value
590
+ if ( empty( $quote_style ) )
591
+ $quote_style = ENT_NOQUOTES;
592
+ elseif ( ! in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) )
593
+ $quote_style = ENT_QUOTES;
594
+
595
+ // Store the site charset as a static to avoid multiple calls to wp_load_alloptions()
596
+ if ( ! $charset ) {
597
+ static $_charset;
598
+ if ( ! isset( $_charset ) ) {
599
+ $alloptions = wp_load_alloptions();
600
+ $_charset = isset( $alloptions['blog_charset'] ) ? $alloptions['blog_charset'] : '';
601
+ }
602
+ $charset = $_charset;
603
+ }
604
+
605
+ if ( in_array( $charset, array( 'utf8', 'utf-8', 'UTF8' ) ) )
606
+ $charset = 'UTF-8';
607
+
608
+ $_quote_style = $quote_style;
609
+
610
+ if ( $quote_style === 'double' ) {
611
+ $quote_style = ENT_COMPAT;
612
+ $_quote_style = ENT_COMPAT;
613
+ } elseif ( $quote_style === 'single' ) {
614
+ $quote_style = ENT_NOQUOTES;
615
+ }
616
+
617
+ // Handle double encoding ourselves
618
+ if ( $double_encode ) {
619
+ $string = @htmlspecialchars( $string, $quote_style, $charset );
620
+ } else {
621
+ // Decode &amp; into &
622
+ $string = wp_specialchars_decode( $string, $_quote_style );
623
+
624
+ // Guarantee every &entity; is valid or re-encode the &
625
+ $string = wp_kses_normalize_entities( $string );
626
+
627
+ // Now re-encode everything except &entity;
628
+ $string = preg_split( '/(&#?x?[0-9a-z]+;)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE );
629
+
630
+ for ( $i = 0; $i < count( $string ); $i += 2 )
631
+ $string[$i] = @htmlspecialchars( $string[$i], $quote_style, $charset );
632
+
633
+ $string = implode( '', $string );
634
+ }
635
+
636
+ // Backwards compatibility
637
+ if ( 'single' === $_quote_style )
638
+ $string = str_replace( "'", '&#039;', $string );
639
+
640
+ return $string;
641
+ }
642
+
643
+ /**
644
+ * Converts a number of HTML entities into their special characters.
645
+ *
646
+ * Specifically deals with: &, <, >, ", and '.
647
+ *
648
+ * $quote_style can be set to ENT_COMPAT to decode " entities,
649
+ * or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded.
650
+ *
651
+ * @since 2.8.0
652
+ *
653
+ * @param string $string The text which is to be decoded.
654
+ * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old _wp_specialchars() values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
655
+ * @return string The decoded text without HTML entities.
656
+ */
657
+ function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
658
+ $string = (string) $string;
659
+
660
+ if ( 0 === strlen( $string ) ) {
661
+ return '';
662
+ }
663
+
664
+ // Don't bother if there are no entities - saves a lot of processing
665
+ if ( strpos( $string, '&' ) === false ) {
666
+ return $string;
667
+ }
668
+
669
+ // Match the previous behaviour of _wp_specialchars() when the $quote_style is not an accepted value
670
+ if ( empty( $quote_style ) ) {
671
+ $quote_style = ENT_NOQUOTES;
672
+ } elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
673
+ $quote_style = ENT_QUOTES;
674
+ }
675
+
676
+ // More complete than get_html_translation_table( HTML_SPECIALCHARS )
677
+ $single = array( '&#039;' => '\'', '&#x27;' => '\'' );
678
+ $single_preg = array( '/&#0*39;/' => '&#039;', '/&#x0*27;/i' => '&#x27;' );
679
+ $double = array( '&quot;' => '"', '&#034;' => '"', '&#x22;' => '"' );
680
+ $double_preg = array( '/&#0*34;/' => '&#034;', '/&#x0*22;/i' => '&#x22;' );
681
+ $others = array( '&lt;' => '<', '&#060;' => '<', '&gt;' => '>', '&#062;' => '>', '&amp;' => '&', '&#038;' => '&', '&#x26;' => '&' );
682
+ $others_preg = array( '/&#0*60;/' => '&#060;', '/&#0*62;/' => '&#062;', '/&#0*38;/' => '&#038;', '/&#x0*26;/i' => '&#x26;' );
683
+
684
+ if ( $quote_style === ENT_QUOTES ) {
685
+ $translation = array_merge( $single, $double, $others );
686
+ $translation_preg = array_merge( $single_preg, $double_preg, $others_preg );
687
+ } elseif ( $quote_style === ENT_COMPAT || $quote_style === 'double' ) {
688
+ $translation = array_merge( $double, $others );
689
+ $translation_preg = array_merge( $double_preg, $others_preg );
690
+ } elseif ( $quote_style === 'single' ) {
691
+ $translation = array_merge( $single, $others );
692
+ $translation_preg = array_merge( $single_preg, $others_preg );
693
+ } elseif ( $quote_style === ENT_NOQUOTES ) {
694
+ $translation = $others;
695
+ $translation_preg = $others_preg;
696
+ }
697
+
698
+ // Remove zero padding on numeric entities
699
+ $string = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $string );
700
+
701
+ // Replace characters according to translation table
702
+ return strtr( $string, $translation );
703
+ }
704
+
705
+ /**
706
+ * Checks for invalid UTF8 in a string.
707
+ *
708
+ * @since 2.8.0
709
+ *
710
+ * @param string $string The text which is to be checked.
711
+ * @param boolean $strip Optional. Whether to attempt to strip out invalid UTF8. Default is false.
712
+ * @return string The checked text.
713
+ */
714
+ function wp_check_invalid_utf8( $string, $strip = false ) {
715
+ $string = (string) $string;
716
+
717
+ if ( 0 === strlen( $string ) ) {
718
+ return '';
719
+ }
720
+
721
+ // Store the site charset as a static to avoid multiple calls to get_option()
722
+ static $is_utf8;
723
+ if ( !isset( $is_utf8 ) ) {
724
+ $is_utf8 = in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) );
725
+ }
726
+ if ( !$is_utf8 ) {
727
+ return $string;
728
+ }
729
+
730
+ // Check for support for utf8 in the installed PCRE library once and store the result in a static
731
+ static $utf8_pcre;
732
+ if ( !isset( $utf8_pcre ) ) {
733
+ $utf8_pcre = @preg_match( '/^./u', 'a' );
734
+ }
735
+ // We can't demand utf8 in the PCRE installation, so just return the string in those cases
736
+ if ( !$utf8_pcre ) {
737
+ return $string;
738
+ }
739
+
740
+ // preg_match fails when it encounters invalid UTF8 in $string
741
+ if ( 1 === @preg_match( '/^./us', $string ) ) {
742
+ return $string;
743
+ }
744
+
745
+ // Attempt to strip the bad chars if requested (not recommended)
746
+ if ( $strip && function_exists( 'iconv' ) ) {
747
+ return iconv( 'utf-8', 'utf-8', $string );
748
+ }
749
+
750
+ return '';
751
+ }
752
+
753
+ /**
754
+ * Encode the Unicode values to be used in the URI.
755
+ *
756
+ * @since 1.5.0
757
+ *
758
+ * @param string $utf8_string
759
+ * @param int $length Max length of the string
760
+ * @return string String with Unicode encoded for URI.
761
+ */
762
+ function utf8_uri_encode( $utf8_string, $length = 0 ) {
763
+ $unicode = '';
764
+ $values = array();
765
+ $num_octets = 1;
766
+ $unicode_length = 0;
767
+
768
+ mbstring_binary_safe_encoding();
769
+ $string_length = strlen( $utf8_string );
770
+ reset_mbstring_encoding();
771
+
772
+ for ($i = 0; $i < $string_length; $i++ ) {
773
+
774
+ $value = ord( $utf8_string[ $i ] );
775
+
776
+ if ( $value < 128 ) {
777
+ if ( $length && ( $unicode_length >= $length ) )
778
+ break;
779
+ $unicode .= chr($value);
780
+ $unicode_length++;
781
+ } else {
782
+ if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3;
783
+
784
+ $values[] = $value;
785
+
786
+ if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length )
787
+ break;
788
+ if ( count( $values ) == $num_octets ) {
789
+ if ($num_octets == 3) {
790
+ $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]);
791
+ $unicode_length += 9;
792
+ } else {
793
+ $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]);
794
+ $unicode_length += 6;
795
+ }
796
+
797
+ $values = array();
798
+ $num_octets = 1;
799
+ }
800
+ }
801
+ }
802
+
803
+ return $unicode;
804
+ }
805
+
806
+ /**
807
+ * Converts all accent characters to ASCII characters.
808
+ *
809
+ * If there are no accent characters, then the string given is just returned.
810
+ *
811
+ * @since 1.2.1
812
+ *
813
+ * @param string $string Text that might have accent characters
814
+ * @return string Filtered string with replaced "nice" characters.
815
+ */
816
+ function remove_accents($string) {
817
+ if ( !preg_match('/[\x80-\xff]/', $string) )
818
+ return $string;
819
+
820
+ if (seems_utf8($string)) {
821
+ $chars = array(
822
+ // Decompositions for Latin-1 Supplement
823
+ chr(194).chr(170) => 'a', chr(194).chr(186) => 'o',
824
+ chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
825
+ chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
826
+ chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
827
+ chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
828
+ chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
829
+ chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
830
+ chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
831
+ chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
832
+ chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
833
+ chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
834
+ chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
835
+ chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
836
+ chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
837
+ chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
838
+ chr(195).chr(158) => 'TH',chr(195).chr(159) => 's',
839
+ chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
840
+ chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
841
+ chr(195).chr(164) => 'a', chr(195).chr(165) => 'a',
842
+ chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
843
+ chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
844
+ chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
845
+ chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
846
+ chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
847
+ chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
848
+ chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
849
+ chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
850
+ chr(195).chr(182) => 'o', chr(195).chr(184) => 'o',
851
+ chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
852
+ chr(195).chr(187) => 'u', chr(195).chr(188) => 'u',
853
+ chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
854
+ chr(195).chr(191) => 'y', chr(195).chr(152) => 'O',
855
+ // Decompositions for Latin Extended-A
856
+ chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
857
+ chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
858
+ chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
859
+ chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
860
+ chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
861
+ chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
862
+ chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
863
+ chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
864
+ chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
865
+ chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
866
+ chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
867
+ chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
868
+ chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
869
+ chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
870
+ chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
871
+ chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
872
+ chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
873
+ chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
874
+ chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
875
+ chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
876
+ chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
877
+ chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
878
+ chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
879
+ chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
880
+ chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
881
+ chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
882
+ chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
883
+ chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
884
+ chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
885
+ chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
886
+ chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
887
+ chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
888
+ chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
889
+ chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
890
+ chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
891
+ chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
892
+ chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
893
+ chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
894
+ chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
895
+ chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
896
+ chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
897
+ chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
898
+ chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
899
+ chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
900
+ chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
901
+ chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
902
+ chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
903
+ chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
904
+ chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
905
+ chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
906
+ chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
907
+ chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
908
+ chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
909
+ chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
910
+ chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
911
+ chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
912
+ chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
913
+ chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
914
+ chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
915
+ chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
916
+ chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
917
+ chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
918
+ chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
919
+ chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
920
+ // Decompositions for Latin Extended-B
921
+ chr(200).chr(152) => 'S', chr(200).chr(153) => 's',
922
+ chr(200).chr(154) => 'T', chr(200).chr(155) => 't',
923
+ // Euro Sign
924
+ chr(226).chr(130).chr(172) => 'E',
925
+ // GBP (Pound) Sign
926
+ chr(194).chr(163) => '',
927
+ // Vowels with diacritic (Vietnamese)
928
+ // unmarked
929
+ chr(198).chr(160) => 'O', chr(198).chr(161) => 'o',
930
+ chr(198).chr(175) => 'U', chr(198).chr(176) => 'u',
931
+ // grave accent
932
+ chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a',
933
+ chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a',
934
+ chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e',
935
+ chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o',
936
+ chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o',
937
+ chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u',
938
+ chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y',
939
+ // hook
940
+ chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a',
941
+ chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a',
942
+ chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a',
943
+ chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e',
944
+ chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e',
945
+ chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i',
946
+ chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o',
947
+ chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o',
948
+ chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o',
949
+ chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u',
950
+ chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u',
951
+ chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y',
952
+ // tilde
953
+ chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a',
954
+ chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a',
955
+ chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e',
956
+ chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e',
957
+ chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o',
958
+ chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o',
959
+ chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u',
960
+ chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y',
961
+ // acute accent
962
+ chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a',
963
+ chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a',
964
+ chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e',
965
+ chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o',
966
+ chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o',
967
+ chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u',
968
+ // dot below
969
+ chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a',
970
+ chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a',
971
+ chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a',
972
+ chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e',
973
+ chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e',
974
+ chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i',
975
+ chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o',
976
+ chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o',
977
+ chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o',
978
+ chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
979
+ chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
980
+ chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
981
+ // Vowels with diacritic (Chinese, Hanyu Pinyin)
982
+ chr(201).chr(145) => 'a',
983
+ // macron
984
+ chr(199).chr(149) => 'U', chr(199).chr(150) => 'u',
985
+ // acute accent
986
+ chr(199).chr(151) => 'U', chr(199).chr(152) => 'u',
987
+ // caron
988
+ chr(199).chr(141) => 'A', chr(199).chr(142) => 'a',
989
+ chr(199).chr(143) => 'I', chr(199).chr(144) => 'i',
990
+ chr(199).chr(145) => 'O', chr(199).chr(146) => 'o',
991
+ chr(199).chr(147) => 'U', chr(199).chr(148) => 'u',
992
+ chr(199).chr(153) => 'U', chr(199).chr(154) => 'u',
993
+ // grave accent
994
+ chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
995
+ );
996
+
997
+ // Used for locale-specific rules
998
+ $locale = get_locale();
999
+
1000
+ if ( 'de_DE' == $locale ) {
1001
+ $chars[ chr(195).chr(132) ] = 'Ae';
1002
+ $chars[ chr(195).chr(164) ] = 'ae';
1003
+ $chars[ chr(195).chr(150) ] = 'Oe';
1004
+ $chars[ chr(195).chr(182) ] = 'oe';
1005
+ $chars[ chr(195).chr(156) ] = 'Ue';
1006
+ $chars[ chr(195).chr(188) ] = 'ue';
1007
+ $chars[ chr(195).chr(159) ] = 'ss';
1008
+ } elseif ( 'da_DK' === $locale ) {
1009
+ $chars[ chr(195).chr(134) ] = 'Ae';
1010
+ $chars[ chr(195).chr(166) ] = 'ae';
1011
+ $chars[ chr(195).chr(152) ] = 'Oe';
1012
+ $chars[ chr(195).chr(184) ] = 'oe';
1013
+ $chars[ chr(195).chr(133) ] = 'Aa';
1014
+ $chars[ chr(195).chr(165) ] = 'aa';
1015
+ }
1016
+
1017
+ $string = strtr($string, $chars);
1018
+ } else {
1019
+ // Assume ISO-8859-1 if not UTF-8
1020
+ $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
1021
+ .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
1022
+ .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
1023
+ .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
1024
+ .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
1025
+ .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
1026
+ .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
1027
+ .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
1028
+ .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
1029
+ .chr(252).chr(253).chr(255);
1030
+
1031
+ $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
1032
+
1033
+ $string = strtr($string, $chars['in'], $chars['out']);
1034
+ $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
1035
+ $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
1036
+ $string = str_replace($double_chars['in'], $double_chars['out'], $string);
1037
+ }
1038
+
1039
+ return $string;
1040
+ }
1041
+
1042
+ /**
1043
+ * Sanitizes a filename, replacing whitespace with dashes.
1044
+ *
1045
+ * Removes special characters that are illegal in filenames on certain
1046
+ * operating systems and special characters requiring special escaping
1047
+ * to manipulate at the command line. Replaces spaces and consecutive
1048
+ * dashes with a single dash. Trims period, dash and underscore from beginning
1049
+ * and end of filename.
1050
+ *
1051
+ * @since 2.1.0
1052
+ *
1053
+ * @param string $filename The filename to be sanitized
1054
+ * @return string The sanitized filename
1055
+ */
1056
+ function sanitize_file_name( $filename ) {
1057
+ $filename_raw = $filename;
1058
+ $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", chr(0));
1059
+ /**
1060
+ * Filter the list of characters to remove from a filename.
1061
+ *
1062
+ * @since 2.8.0
1063
+ *
1064
+ * @param array $special_chars Characters to remove.
1065
+ * @param string $filename_raw Filename as it was passed into sanitize_file_name().
1066
+ */
1067
+ $special_chars = apply_filters( 'sanitize_file_name_chars', $special_chars, $filename_raw );
1068
+ $filename = preg_replace( "#\x{00a0}#siu", ' ', $filename );
1069
+ $filename = str_replace( $special_chars, '', $filename );
1070
+ $filename = str_replace( array( '%20', '+' ), '-', $filename );
1071
+ $filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
1072
+ $filename = trim( $filename, '.-_' );
1073
+
1074
+ // Split the filename into a base and extension[s]
1075
+ $parts = explode('.', $filename);
1076
+
1077
+ // Return if only one extension
1078
+ if ( count( $parts ) <= 2 ) {
1079
+ /**
1080
+ * Filter a sanitized filename string.
1081
+ *
1082
+ * @since 2.8.0
1083
+ *
1084
+ * @param string $filename Sanitized filename.
1085
+ * @param string $filename_raw The filename prior to sanitization.
1086
+ */
1087
+ return apply_filters( 'sanitize_file_name', $filename, $filename_raw );
1088
+ }
1089
+
1090
+ // Process multiple extensions
1091
+ $filename = array_shift($parts);
1092
+ $extension = array_pop($parts);
1093
+ $mimes = get_allowed_mime_types();
1094
+
1095
+ /*
1096
+ * Loop over any intermediate extensions. Postfix them with a trailing underscore
1097
+ * if they are a 2 - 5 character long alpha string not in the extension whitelist.
1098
+ */
1099
+ foreach ( (array) $parts as $part) {
1100
+ $filename .= '.' . $part;
1101
+
1102
+ if ( preg_match("/^[a-zA-Z]{2,5}\d?$/", $part) ) {
1103
+ $allowed = false;
1104
+ foreach ( $mimes as $ext_preg => $mime_match ) {
1105
+ $ext_preg = '!^(' . $ext_preg . ')$!i';
1106
+ if ( preg_match( $ext_preg, $part ) ) {
1107
+ $allowed = true;
1108
+ break;
1109
+ }
1110
+ }
1111
+ if ( !$allowed )
1112
+ $filename .= '_';
1113
+ }
1114
+ }
1115
+ $filename .= '.' . $extension;
1116
+ /** This filter is documented in wp-includes/formatting.php */
1117
+ return apply_filters('sanitize_file_name', $filename, $filename_raw);
1118
+ }
1119
+
1120
+ /**
1121
+ * Sanitizes a username, stripping out unsafe characters.
1122
+ *
1123
+ * Removes tags, octets, entities, and if strict is enabled, will only keep
1124
+ * alphanumeric, _, space, ., -, @. After sanitizing, it passes the username,
1125
+ * raw username (the username in the parameter), and the value of $strict as
1126
+ * parameters for the 'sanitize_user' filter.
1127
+ *
1128
+ * @since 2.0.0
1129
+ *
1130
+ * @param string $username The username to be sanitized.
1131
+ * @param bool $strict If set limits $username to specific characters. Default false.
1132
+ * @return string The sanitized username, after passing through filters.
1133
+ */
1134
+ function sanitize_user( $username, $strict = false ) {
1135
+ $raw_username = $username;
1136
+ $username = wp_strip_all_tags( $username );
1137
+ $username = remove_accents( $username );
1138
+ // Kill octets
1139
+ $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
1140
+ $username = preg_replace( '/&.+?;/', '', $username ); // Kill entities
1141
+
1142
+ // If strict, reduce to ASCII for max portability.
1143
+ if ( $strict )
1144
+ $username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );
1145
+
1146
+ $username = trim( $username );
1147
+ // Consolidate contiguous whitespace
1148
+ $username = preg_replace( '|\s+|', ' ', $username );
1149
+
1150
+ /**
1151
+ * Filter a sanitized username string.
1152
+ *
1153
+ * @since 2.0.1
1154
+ *
1155
+ * @param string $username Sanitized username.
1156
+ * @param string $raw_username The username prior to sanitization.
1157
+ * @param bool $strict Whether to limit the sanitization to specific characters. Default false.
1158
+ */
1159
+ return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
1160
+ }
1161
+
1162
+ /**
1163
+ * Sanitizes a string key.
1164
+ *
1165
+ * Keys are used as internal identifiers. Lowercase alphanumeric characters, dashes and underscores are allowed.
1166
+ *
1167
+ * @since 3.0.0
1168
+ *
1169
+ * @param string $key String key
1170
+ * @return string Sanitized key
1171
+ */
1172
+ function sanitize_key( $key ) {
1173
+ $raw_key = $key;
1174
+ $key = strtolower( $key );
1175
+ $key = preg_replace( '/[^a-z0-9_\-]/', '', $key );
1176
+
1177
+ /**
1178
+ * Filter a sanitized key string.
1179
+ *
1180
+ * @since 3.0.0
1181
+ *
1182
+ * @param string $key Sanitized key.
1183
+ * @param string $raw_key The key prior to sanitization.
1184
+ */
1185
+ return apply_filters( 'sanitize_key', $key, $raw_key );
1186
+ }
1187
+
1188
+ /**
1189
+ * Sanitizes a title, or returns a fallback title.
1190
+ *
1191
+ * Specifically, HTML and PHP tags are stripped. Further actions can be added
1192
+ * via the plugin API. If $title is empty and $fallback_title is set, the latter
1193
+ * will be used.
1194
+ *
1195
+ * @since 1.0.0
1196
+ *
1197
+ * @param string $title The string to be sanitized.
1198
+ * @param string $fallback_title Optional. A title to use if $title is empty.
1199
+ * @param string $context Optional. The operation for which the string is sanitized
1200
+ * @return string The sanitized string.
1201
+ */
1202
+ function sanitize_title( $title, $fallback_title = '', $context = 'save' ) {
1203
+ $raw_title = $title;
1204
+
1205
+ if ( 'save' == $context )
1206
+ $title = remove_accents($title);
1207
+
1208
+ /**
1209
+ * Filter a sanitized title string.
1210
+ *
1211
+ * @since 1.2.0
1212
+ *
1213
+ * @param string $title Sanitized title.
1214
+ * @param string $raw_title The title prior to sanitization.
1215
+ * @param string $context The context for which the title is being sanitized.
1216
+ */
1217
+ $title = apply_filters( 'sanitize_title', $title, $raw_title, $context );
1218
+
1219
+ if ( '' === $title || false === $title )
1220
+ $title = $fallback_title;
1221
+
1222
+ return $title;
1223
+ }
1224
+
1225
+ /**
1226
+ * Sanitizes a title with the 'query' context.
1227
+ *
1228
+ * Used for querying the database for a value from URL.
1229
+ *
1230
+ * @since 3.1.0
1231
+ * @uses sanitize_title()
1232
+ *
1233
+ * @param string $title The string to be sanitized.
1234
+ * @return string The sanitized string.
1235
+ */
1236
+ function sanitize_title_for_query( $title ) {
1237
+ return sanitize_title( $title, '', 'query' );
1238
+ }
1239
+
1240
+ /**
1241
+ * Sanitizes a title, replacing whitespace and a few other characters with dashes.
1242
+ *
1243
+ * Limits the output to alphanumeric characters, underscore (_) and dash (-).
1244
+ * Whitespace becomes a dash.
1245
+ *
1246
+ * @since 1.2.0
1247
+ *
1248
+ * @param string $title The title to be sanitized.
1249
+ * @param string $raw_title Optional. Not used.
1250
+ * @param string $context Optional. The operation for which the string is sanitized.
1251
+ * @return string The sanitized title.
1252
+ */
1253
+ function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
1254
+ $title = strip_tags($title);
1255
+ // Preserve escaped octets.
1256
+ $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
1257
+ // Remove percent signs that are not part of an octet.
1258
+ $title = str_replace('%', '', $title);
1259
+ // Restore octets.
1260
+ $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
1261
+
1262
+ if (seems_utf8($title)) {
1263
+ if (function_exists('mb_strtolower')) {
1264
+ $title = mb_strtolower($title, 'UTF-8');
1265
+ }
1266
+ $title = utf8_uri_encode($title, 200);
1267
+ }
1268
+
1269
+ $title = strtolower($title);
1270
+ $title = preg_replace('/&.+?;/', '', $title); // kill entities
1271
+ $title = str_replace('.', '-', $title);
1272
+
1273
+ if ( 'save' == $context ) {
1274
+ // Convert nbsp, ndash and mdash to hyphens
1275
+ $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
1276
+
1277
+ // Strip these characters entirely
1278
+ $title = str_replace( array(
1279
+ // iexcl and iquest
1280
+ '%c2%a1', '%c2%bf',
1281
+ // angle quotes
1282
+ '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
1283
+ // curly quotes
1284
+ '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
1285
+ '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
1286
+ // copy, reg, deg, hellip and trade
1287
+ '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
1288
+ // acute accents
1289
+ '%c2%b4', '%cb%8a', '%cc%81', '%cd%81',
1290
+ // grave accent, macron, caron
1291
+ '%cc%80', '%cc%84', '%cc%8c',
1292
+ ), '', $title );
1293
+
1294
+ // Convert times to x
1295
+ $title = str_replace( '%c3%97', 'x', $title );
1296
+ }
1297
+
1298
+ $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
1299
+ $title = preg_replace('/\s+/', '-', $title);
1300
+ $title = preg_replace('|-+|', '-', $title);
1301
+ $title = trim($title, '-');
1302
+
1303
+ return $title;
1304
+ }
1305
+
1306
+ /**
1307
+ * Ensures a string is a valid SQL order by clause.
1308
+ *
1309
+ * Accepts one or more columns, with or without ASC/DESC, and also accepts
1310
+ * RAND().
1311
+ *
1312
+ * @since 2.5.1
1313
+ *
1314
+ * @param string $orderby Order by string to be checked.
1315
+ * @return string|bool Returns the order by clause if it is a match, false otherwise.
1316
+ */
1317
+ function sanitize_sql_orderby( $orderby ){
1318
+ preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
1319
+ if ( !$obmatches )
1320
+ return false;
1321
+ return $orderby;
1322
+ }
1323
+
1324
+ /**
1325
+ * Sanitizes an HTML classname to ensure it only contains valid characters.
1326
+ *
1327
+ * Strips the string down to A-Z,a-z,0-9,_,-. If this results in an empty
1328
+ * string then it will return the alternative value supplied.
1329
+ *
1330
+ * @todo Expand to support the full range of CDATA that a class attribute can contain.
1331
+ *
1332
+ * @since 2.8.0
1333
+ *
1334
+ * @param string $class The classname to be sanitized
1335
+ * @param string $fallback Optional. The value to return if the sanitization ends up as an empty string.
1336
+ * Defaults to an empty string.
1337
+ * @return string The sanitized value
1338
+ */
1339
+ function sanitize_html_class( $class, $fallback = '' ) {
1340
+ //Strip out any % encoded octets
1341
+ $sanitized = preg_replace( '|%[a-fA-F0-9][a-fA-F0-9]|', '', $class );
1342
+
1343
+ //Limit to A-Z,a-z,0-9,_,-
1344
+ $sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $sanitized );
1345
+
1346
+ if ( '' == $sanitized )
1347
+ $sanitized = $fallback;
1348
+
1349
+ /**
1350
+ * Filter a sanitized HTML class string.
1351
+ *
1352
+ * @since 2.8.0
1353
+ *
1354
+ * @param string $sanitized The sanitized HTML class.
1355
+ * @param string $class HTML class before sanitization.
1356
+ * @param string $fallback The fallback string.
1357
+ */
1358
+ return apply_filters( 'sanitize_html_class', $sanitized, $class, $fallback );
1359
+ }
1360
+
1361
+ /**
1362
+ * Converts a number of characters from a string.
1363
+ *
1364
+ * Metadata tags <<title>> and <<category>> are removed, <<br>> and <<hr>> are
1365
+ * converted into correct XHTML and Unicode characters are converted to the
1366
+ * valid range.
1367
+ *
1368
+ * @since 0.71
1369
+ *
1370
+ * @param string $content String of characters to be converted.
1371
+ * @param string $deprecated Not used.
1372
+ * @return string Converted string.
1373
+ */
1374
+ function convert_chars($content, $deprecated = '') {
1375
+ if ( !empty( $deprecated ) )
1376
+ _deprecated_argument( __FUNCTION__, '0.71' );
1377
+
1378
+ // Translation of invalid Unicode references range to valid range
1379
+ $wp_htmltranswinuni = array(
1380
+ '&#128;' => '&#8364;', // the Euro sign
1381
+ '&#129;' => '',
1382
+ '&#130;' => '&#8218;', // these are Windows CP1252 specific characters
1383
+ '&#131;' => '&#402;', // they would look weird on non-Windows browsers
1384
+ '&#132;' => '&#8222;',
1385
+ '&#133;' => '&#8230;',
1386
+ '&#134;' => '&#8224;',
1387
+ '&#135;' => '&#8225;',
1388
+ '&#136;' => '&#710;',
1389
+ '&#137;' => '&#8240;',
1390
+ '&#138;' => '&#352;',
1391
+ '&#139;' => '&#8249;',
1392
+ '&#140;' => '&#338;',
1393
+ '&#141;' => '',
1394
+ '&#142;' => '&#381;',
1395
+ '&#143;' => '',
1396
+ '&#144;' => '',
1397
+ '&#145;' => '&#8216;',
1398
+ '&#146;' => '&#8217;',
1399
+ '&#147;' => '&#8220;',
1400
+ '&#148;' => '&#8221;',
1401
+ '&#149;' => '&#8226;',
1402
+ '&#150;' => '&#8211;',
1403
+ '&#151;' => '&#8212;',
1404
+ '&#152;' => '&#732;',
1405
+ '&#153;' => '&#8482;',
1406
+ '&#154;' => '&#353;',
1407
+ '&#155;' => '&#8250;',
1408
+ '&#156;' => '&#339;',
1409
+ '&#157;' => '',
1410
+ '&#158;' => '&#382;',
1411
+ '&#159;' => '&#376;'
1412
+ );
1413
+
1414
+ // Remove metadata tags
1415
+ $content = preg_replace('/<title>(.+?)<\/title>/','',$content);
1416
+ $content = preg_replace('/<category>(.+?)<\/category>/','',$content);
1417
+
1418
+ // Converts lone & characters into &#38; (a.k.a. &amp;)
1419
+ $content = preg_replace('/&([^#])(?![a-z1-4]{1,8};)/i', '&#038;$1', $content);
1420
+
1421
+ // Fix Word pasting
1422
+ $content = strtr($content, $wp_htmltranswinuni);
1423
+
1424
+ // Just a little XHTML help
1425
+ $content = str_replace('<br>', '<br />', $content);
1426
+ $content = str_replace('<hr>', '<hr />', $content);
1427
+
1428
+ return $content;
1429
+ }
1430
+
1431
+ /**
1432
+ * Balances tags if forced to, or if the 'use_balanceTags' option is set to true.
1433
+ *
1434
+ * @since 0.71
1435
+ *
1436
+ * @param string $text Text to be balanced
1437
+ * @param bool $force If true, forces balancing, ignoring the value of the option. Default false.
1438
+ * @return string Balanced text
1439
+ */
1440
+ function balanceTags( $text, $force = false ) {
1441
+ if ( $force || get_option('use_balanceTags') == 1 ) {
1442
+ return force_balance_tags( $text );
1443
+ } else {
1444
+ return $text;
1445
+ }
1446
+ }
1447
+
1448
+ /**
1449
+ * Balances tags of string using a modified stack.
1450
+ *
1451
+ * @since 2.0.4
1452
+ *
1453
+ * @author Leonard Lin <leonard@acm.org>
1454
+ * @license GPL
1455
+ * @copyright November 4, 2001
1456
+ * @version 1.1
1457
+ * @todo Make better - change loop condition to $text in 1.2
1458
+ * @internal Modified by Scott Reilly (coffee2code) 02 Aug 2004
1459
+ * 1.1 Fixed handling of append/stack pop order of end text
1460
+ * Added Cleaning Hooks
1461
+ * 1.0 First Version
1462
+ *
1463
+ * @param string $text Text to be balanced.
1464
+ * @return string Balanced text.
1465
+ */
1466
+ function force_balance_tags( $text ) {
1467
+ $tagstack = array();
1468
+ $stacksize = 0;
1469
+ $tagqueue = '';
1470
+ $newtext = '';
1471
+ // Known single-entity/self-closing tags
1472
+ $single_tags = array( 'area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source' );
1473
+ // Tags that can be immediately nested within themselves
1474
+ $nestable_tags = array( 'blockquote', 'div', 'object', 'q', 'span' );
1475
+
1476
+ // WP bug fix for comments - in case you REALLY meant to type '< !--'
1477
+ $text = str_replace('< !--', '< !--', $text);
1478
+ // WP bug fix for LOVE <3 (and other situations with '<' before a number)
1479
+ $text = preg_replace('#<([0-9]{1})#', '&lt;$1', $text);
1480
+
1481
+ while ( preg_match("/<(\/?[\w:]*)\s*([^>]*)>/", $text, $regex) ) {
1482
+ $newtext .= $tagqueue;
1483
+
1484
+ $i = strpos($text, $regex[0]);
1485
+ $l = strlen($regex[0]);
1486
+
1487
+ // clear the shifter
1488
+ $tagqueue = '';
1489
+ // Pop or Push
1490
+ if ( isset($regex[1][0]) && '/' == $regex[1][0] ) { // End Tag
1491
+ $tag = strtolower(substr($regex[1],1));
1492
+ // if too many closing tags
1493
+ if( $stacksize <= 0 ) {
1494
+ $tag = '';
1495
+ // or close to be safe $tag = '/' . $tag;
1496
+ }
1497
+ // if stacktop value = tag close value then pop
1498
+ else if ( $tagstack[$stacksize - 1] == $tag ) { // found closing tag
1499
+ $tag = '</' . $tag . '>'; // Close Tag
1500
+ // Pop
1501
+ array_pop( $tagstack );
1502
+ $stacksize--;
1503
+ } else { // closing tag not at top, search for it
1504
+ for ( $j = $stacksize-1; $j >= 0; $j-- ) {
1505
+ if ( $tagstack[$j] == $tag ) {
1506
+ // add tag to tagqueue
1507
+ for ( $k = $stacksize-1; $k >= $j; $k--) {
1508
+ $tagqueue .= '</' . array_pop( $tagstack ) . '>';
1509
+ $stacksize--;
1510
+ }
1511
+ break;
1512
+ }
1513
+ }
1514
+ $tag = '';
1515
+ }
1516
+ } else { // Begin Tag
1517
+ $tag = strtolower($regex[1]);
1518
+
1519
+ // Tag Cleaning
1520
+
1521
+ // If it's an empty tag "< >", do nothing
1522
+ if ( '' == $tag ) {
1523
+ // do nothing
1524
+ }
1525
+ // ElseIf it presents itself as a self-closing tag...
1526
+ elseif ( substr( $regex[2], -1 ) == '/' ) {
1527
+ // ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and
1528
+ // immediately close it with a closing tag (the tag will encapsulate no text as a result)
1529
+ if ( ! in_array( $tag, $single_tags ) )
1530
+ $regex[2] = trim( substr( $regex[2], 0, -1 ) ) . "></$tag";
1531
+ }
1532
+ // ElseIf it's a known single-entity tag but it doesn't close itself, do so
1533
+ elseif ( in_array($tag, $single_tags) ) {
1534
+ $regex[2] .= '/';
1535
+ }
1536
+ // Else it's not a single-entity tag
1537
+ else {
1538
+ // If the top of the stack is the same as the tag we want to push, close previous tag
1539
+ if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) {
1540
+ $tagqueue = '</' . array_pop( $tagstack ) . '>';
1541
+ $stacksize--;
1542
+ }
1543
+ $stacksize = array_push( $tagstack, $tag );
1544
+ }
1545
+
1546
+ // Attributes
1547
+ $attributes = $regex[2];
1548
+ if( ! empty( $attributes ) && $attributes[0] != '>' )
1549
+ $attributes = ' ' . $attributes;
1550
+
1551
+ $tag = '<' . $tag . $attributes . '>';
1552
+ //If already queuing a close tag, then put this tag on, too
1553
+ if ( !empty($tagqueue) ) {
1554
+ $tagqueue .= $tag;
1555
+ $tag = '';
1556
+ }
1557
+ }
1558
+ $newtext .= substr($text, 0, $i) . $tag;
1559
+ $text = substr($text, $i + $l);
1560
+ }
1561
+
1562
+ // Clear Tag Queue
1563
+ $newtext .= $tagqueue;
1564
+
1565
+ // Add Remaining text
1566
+ $newtext .= $text;
1567
+
1568
+ // Empty Stack
1569
+ while( $x = array_pop($tagstack) )
1570
+ $newtext .= '</' . $x . '>'; // Add remaining tags to close
1571
+
1572
+ // WP fix for the bug with HTML comments
1573
+ $newtext = str_replace("< !--","<!--",$newtext);
1574
+ $newtext = str_replace("< !--","< !--",$newtext);
1575
+
1576
+ return $newtext;
1577
+ }
1578
+
1579
+ /**
1580
+ * Acts on text which is about to be edited.
1581
+ *
1582
+ * The $content is run through esc_textarea(), which uses htmlspecialchars()
1583
+ * to convert special characters to HTML entities. If $richedit is set to true,
1584
+ * it is simply a holder for the 'format_to_edit' filter.
1585
+ *
1586
+ * @since 0.71
1587
+ *
1588
+ * @param string $content The text about to be edited.
1589
+ * @param bool $richedit Whether the $content should not pass through htmlspecialchars(). Default false (meaning it will be passed).
1590
+ * @return string The text after the filter (and possibly htmlspecialchars()) has been run.
1591
+ */
1592
+ function format_to_edit( $content, $richedit = false ) {
1593
+ /**
1594
+ * Filter the text to be formatted for editing.
1595
+ *
1596
+ * @since 1.2.0
1597
+ *
1598
+ * @param string $content The text, prior to formatting for editing.
1599
+ */
1600
+ $content = apply_filters( 'format_to_edit', $content );
1601
+ if ( ! $richedit )
1602
+ $content = esc_textarea( $content );
1603
+ return $content;
1604
+ }
1605
+
1606
+ /**
1607
+ * Add leading zeros when necessary.
1608
+ *
1609
+ * If you set the threshold to '4' and the number is '10', then you will get
1610
+ * back '0010'. If you set the threshold to '4' and the number is '5000', then you
1611
+ * will get back '5000'.
1612
+ *
1613
+ * Uses sprintf to append the amount of zeros based on the $threshold parameter
1614
+ * and the size of the number. If the number is large enough, then no zeros will
1615
+ * be appended.
1616
+ *
1617
+ * @since 0.71
1618
+ *
1619
+ * @param mixed $number Number to append zeros to if not greater than threshold.
1620
+ * @param int $threshold Digit places number needs to be to not have zeros added.
1621
+ * @return string Adds leading zeros to number if needed.
1622
+ */
1623
+ function zeroise($number, $threshold) {
1624
+ return sprintf('%0'.$threshold.'s', $number);
1625
+ }
1626
+
1627
+ /**
1628
+ * Adds backslashes before letters and before a number at the start of a string.
1629
+ *
1630
+ * @since 0.71
1631
+ *
1632
+ * @param string $string Value to which backslashes will be added.
1633
+ * @return string String with backslashes inserted.
1634
+ */
1635
+ function backslashit($string) {
1636
+ if ( isset( $string[0] ) && $string[0] >= '0' && $string[0] <= '9' )
1637
+ $string = '\\\\' . $string;
1638
+ return addcslashes( $string, 'A..Za..z' );
1639
+ }
1640
+
1641
+ /**
1642
+ * Appends a trailing slash.
1643
+ *
1644
+ * Will remove trailing forward and backslashes if it exists already before adding
1645
+ * a trailing forward slash. This prevents double slashing a string or path.
1646
+ *
1647
+ * The primary use of this is for paths and thus should be used for paths. It is
1648
+ * not restricted to paths and offers no specific path support.
1649
+ *
1650
+ * @since 1.2.0
1651
+ *
1652
+ * @param string $string What to add the trailing slash to.
1653
+ * @return string String with trailing slash added.
1654
+ */
1655
+ function trailingslashit( $string ) {
1656
+ return untrailingslashit( $string ) . '/';
1657
+ }
1658
+
1659
+ /**
1660
+ * Removes trailing forward slashes and backslashes if they exist.
1661
+ *
1662
+ * The primary use of this is for paths and thus should be used for paths. It is
1663
+ * not restricted to paths and offers no specific path support.
1664
+ *
1665
+ * @since 2.2.0
1666
+ *
1667
+ * @param string $string What to remove the trailing slashes from.
1668
+ * @return string String without the trailing slashes.
1669
+ */
1670
+ function untrailingslashit( $string ) {
1671
+ return rtrim( $string, '/\\' );
1672
+ }
1673
+
1674
+ /**
1675
+ * Adds slashes to escape strings.
1676
+ *
1677
+ * Slashes will first be removed if magic_quotes_gpc is set, see {@link
1678
+ * http://www.php.net/magic_quotes} for more details.
1679
+ *
1680
+ * @since 0.71
1681
+ *
1682
+ * @param string $gpc The string returned from HTTP request data.
1683
+ * @return string Returns a string escaped with slashes.
1684
+ */
1685
+ function addslashes_gpc($gpc) {
1686
+ if ( get_magic_quotes_gpc() )
1687
+ $gpc = stripslashes($gpc);
1688
+
1689
+ return wp_slash($gpc);
1690
+ }
1691
+
1692
+ /**
1693
+ * Navigates through an array and removes slashes from the values.
1694
+ *
1695
+ * If an array is passed, the array_map() function causes a callback to pass the
1696
+ * value back to the function. The slashes from this value will removed.
1697
+ *
1698
+ * @since 2.0.0
1699
+ *
1700
+ * @param mixed $value The value to be stripped.
1701
+ * @return mixed Stripped value.
1702
+ */
1703
+ function stripslashes_deep($value) {
1704
+ if ( is_array($value) ) {
1705
+ $value = array_map('stripslashes_deep', $value);
1706
+ } elseif ( is_object($value) ) {
1707
+ $vars = get_object_vars( $value );
1708
+ foreach ($vars as $key=>$data) {
1709
+ $value->{$key} = stripslashes_deep( $data );
1710
+ }
1711
+ } elseif ( is_string( $value ) ) {
1712
+ $value = stripslashes($value);
1713
+ }
1714
+
1715
+ return $value;
1716
+ }
1717
+
1718
+ /**
1719
+ * Navigates through an array and encodes the values to be used in a URL.
1720
+ *
1721
+ *
1722
+ * @since 2.2.0
1723
+ *
1724
+ * @param array|string $value The array or string to be encoded.
1725
+ * @return array|string $value The encoded array (or string from the callback).
1726
+ */
1727
+ function urlencode_deep($value) {
1728
+ $value = is_array($value) ? array_map('urlencode_deep', $value) : urlencode($value);
1729
+ return $value;
1730
+ }
1731
+
1732
+ /**
1733
+ * Navigates through an array and raw encodes the values to be used in a URL.
1734
+ *
1735
+ * @since 3.4.0
1736
+ *
1737
+ * @param array|string $value The array or string to be encoded.
1738
+ * @return array|string $value The encoded array (or string from the callback).
1739
+ */
1740
+ function rawurlencode_deep( $value ) {
1741
+ return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
1742
+ }
1743
+
1744
+ /**
1745
+ * Converts email addresses characters to HTML entities to block spam bots.
1746
+ *
1747
+ * @since 0.71
1748
+ *
1749
+ * @param string $email_address Email address.
1750
+ * @param int $hex_encoding Optional. Set to 1 to enable hex encoding.
1751
+ * @return string Converted email address.
1752
+ */
1753
+ function antispambot( $email_address, $hex_encoding = 0 ) {
1754
+ $email_no_spam_address = '';
1755
+ for ( $i = 0; $i < strlen( $email_address ); $i++ ) {
1756
+ $j = rand( 0, 1 + $hex_encoding );
1757
+ if ( $j == 0 ) {
1758
+ $email_no_spam_address .= '&#' . ord( $email_address[$i] ) . ';';
1759
+ } elseif ( $j == 1 ) {
1760
+ $email_no_spam_address .= $email_address[$i];
1761
+ } elseif ( $j == 2 ) {
1762
+ $email_no_spam_address .= '%' . zeroise( dechex( ord( $email_address[$i] ) ), 2 );
1763
+ }
1764
+ }
1765
+
1766
+ $email_no_spam_address = str_replace( '@', '&#64;', $email_no_spam_address );
1767
+
1768
+ return $email_no_spam_address;
1769
+ }
1770
+
1771
+ /**
1772
+ * Callback to convert URI match to HTML A element.
1773
+ *
1774
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
1775
+ * make_clickable()}.
1776
+ *
1777
+ * @since 2.3.2
1778
+ * @access private
1779
+ *
1780
+ * @param array $matches Single Regex Match.
1781
+ * @return string HTML A element with URI address.
1782
+ */
1783
+ function _make_url_clickable_cb($matches) {
1784
+ $url = $matches[2];
1785
+
1786
+ if ( ')' == $matches[3] && strpos( $url, '(' ) ) {
1787
+ // If the trailing character is a closing parethesis, and the URL has an opening parenthesis in it, add the closing parenthesis to the URL.
1788
+ // Then we can let the parenthesis balancer do its thing below.
1789
+ $url .= $matches[3];
1790
+ $suffix = '';
1791
+ } else {
1792
+ $suffix = $matches[3];
1793
+ }
1794
+
1795
+ // Include parentheses in the URL only if paired
1796
+ while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
1797
+ $suffix = strrchr( $url, ')' ) . $suffix;
1798
+ $url = substr( $url, 0, strrpos( $url, ')' ) );
1799
+ }
1800
+
1801
+ $url = esc_url($url);
1802
+ if ( empty($url) )
1803
+ return $matches[0];
1804
+
1805
+ return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $suffix;
1806
+ }
1807
+
1808
+ /**
1809
+ * Callback to convert URL match to HTML A element.
1810
+ *
1811
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
1812
+ * make_clickable()}.
1813
+ *
1814
+ * @since 2.3.2
1815
+ * @access private
1816
+ *
1817
+ * @param array $matches Single Regex Match.
1818
+ * @return string HTML A element with URL address.
1819
+ */
1820
+ function _make_web_ftp_clickable_cb($matches) {
1821
+ $ret = '';
1822
+ $dest = $matches[2];
1823
+ $dest = 'http://' . $dest;
1824
+ $dest = esc_url($dest);
1825
+ if ( empty($dest) )
1826
+ return $matches[0];
1827
+
1828
+ // removed trailing [.,;:)] from URL
1829
+ if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
1830
+ $ret = substr($dest, -1);
1831
+ $dest = substr($dest, 0, strlen($dest)-1);
1832
+ }
1833
+ return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
1834
+ }
1835
+
1836
+ /**
1837
+ * Callback to convert email address match to HTML A element.
1838
+ *
1839
+ * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
1840
+ * make_clickable()}.
1841
+ *
1842
+ * @since 2.3.2
1843
+ * @access private
1844
+ *
1845
+ * @param array $matches Single Regex Match.
1846
+ * @return string HTML A element with email address.
1847
+ */
1848
+ function _make_email_clickable_cb($matches) {
1849
+ $email = $matches[2] . '@' . $matches[3];
1850
+ return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
1851
+ }
1852
+
1853
+ /**
1854
+ * Convert plaintext URI to HTML links.
1855
+ *
1856
+ * Converts URI, www and ftp, and email addresses. Finishes by fixing links
1857
+ * within links.
1858
+ *
1859
+ * @since 0.71
1860
+ *
1861
+ * @param string $text Content to convert URIs.
1862
+ * @return string Content with converted URIs.
1863
+ */
1864
+ function make_clickable( $text ) {
1865
+ $r = '';
1866
+ $textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags
1867
+ $nested_code_pre = 0; // Keep track of how many levels link is nested inside <pre> or <code>
1868
+ foreach ( $textarr as $piece ) {
1869
+
1870
+ if ( preg_match( '|^<code[\s>]|i', $piece ) || preg_match( '|^<pre[\s>]|i', $piece ) )
1871
+ $nested_code_pre++;
1872
+ elseif ( ( '</code>' === strtolower( $piece ) || '</pre>' === strtolower( $piece ) ) && $nested_code_pre )
1873
+ $nested_code_pre--;
1874
+
1875
+ if ( $nested_code_pre || empty( $piece ) || ( $piece[0] === '<' && ! preg_match( '|^<\s*[\w]{1,20}+://|', $piece ) ) ) {
1876
+ $r .= $piece;
1877
+ continue;
1878
+ }
1879
+
1880
+ // Long strings might contain expensive edge cases ...
1881
+ if ( 10000 < strlen( $piece ) ) {
1882
+ // ... break it up
1883
+ foreach ( _split_str_by_whitespace( $piece, 2100 ) as $chunk ) { // 2100: Extra room for scheme and leading and trailing paretheses
1884
+ if ( 2101 < strlen( $chunk ) ) {
1885
+ $r .= $chunk; // Too big, no whitespace: bail.
1886
+ } else {
1887
+ $r .= make_clickable( $chunk );
1888
+ }
1889
+ }
1890
+ } else {
1891
+ $ret = " $piece "; // Pad with whitespace to simplify the regexes
1892
+
1893
+ $url_clickable = '~
1894
+ ([\\s(<.,;:!?]) # 1: Leading whitespace, or punctuation
1895
+ ( # 2: URL
1896
+ [\\w]{1,20}+:// # Scheme and hier-part prefix
1897
+ (?=\S{1,2000}\s) # Limit to URLs less than about 2000 characters long
1898
+ [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+ # Non-punctuation URL character
1899
+ (?: # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character
1900
+ [\'.,;:!?)] # Punctuation URL character
1901
+ [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character
1902
+ )*
1903
+ )
1904
+ (\)?) # 3: Trailing closing parenthesis (for parethesis balancing post processing)
1905
+ ~xS'; // The regex is a non-anchored pattern and does not have a single fixed starting character.
1906
+ // Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times.
1907
+
1908
+ $ret = preg_replace_callback( $url_clickable, '_make_url_clickable_cb', $ret );
1909
+
1910
+ $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret );
1911
+ $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret );
1912
+
1913
+ $ret = substr( $ret, 1, -1 ); // Remove our whitespace padding.
1914
+ $r .= $ret;
1915
+ }
1916
+ }
1917
+
1918
+ // Cleanup of accidental links within links
1919
+ $r = preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
1920
+ return $r;
1921
+ }
1922
+
1923
+ /**
1924
+ * Breaks a string into chunks by splitting at whitespace characters.
1925
+ * The length of each returned chunk is as close to the specified length goal as possible,
1926
+ * with the caveat that each chunk includes its trailing delimiter.
1927
+ * Chunks longer than the goal are guaranteed to not have any inner whitespace.
1928
+ *
1929
+ * Joining the returned chunks with empty delimiters reconstructs the input string losslessly.
1930
+ *
1931
+ * Input string must have no null characters (or eventual transformations on output chunks must not care about null characters)
1932
+ *
1933
+ * <code>
1934
+ * _split_str_by_whitespace( "1234 67890 1234 67890a cd 1234 890 123456789 1234567890a 45678 1 3 5 7 90 ", 10 ) ==
1935
+ * array (
1936
+ * 0 => '1234 67890 ', // 11 characters: Perfect split
1937
+ * 1 => '1234 ', // 5 characters: '1234 67890a' was too long
1938
+ * 2 => '67890a cd ', // 10 characters: '67890a cd 1234' was too long
1939
+ * 3 => '1234 890 ', // 11 characters: Perfect split
1940
+ * 4 => '123456789 ', // 10 characters: '123456789 1234567890a' was too long
1941
+ * 5 => '1234567890a ', // 12 characters: Too long, but no inner whitespace on which to split
1942
+ * 6 => ' 45678 ', // 11 characters: Perfect split
1943
+ * 7 => '1 3 5 7 9', // 9 characters: End of $string
1944
+ * );
1945
+ * </code>
1946
+ *
1947
+ * @since 3.4.0
1948
+ * @access private
1949
+ *
1950
+ * @param string $string The string to split.
1951
+ * @param int $goal The desired chunk length.
1952
+ * @return array Numeric array of chunks.
1953
+ */
1954
+ function _split_str_by_whitespace( $string, $goal ) {
1955
+ $chunks = array();
1956
+
1957
+ $string_nullspace = strtr( $string, "\r\n\t\v\f ", "\000\000\000\000\000\000" );
1958
+
1959
+ while ( $goal < strlen( $string_nullspace ) ) {
1960
+ $pos = strrpos( substr( $string_nullspace, 0, $goal + 1 ), "\000" );
1961
+
1962
+ if ( false === $pos ) {
1963
+ $pos = strpos( $string_nullspace, "\000", $goal + 1 );
1964
+ if ( false === $pos ) {
1965
+ break;
1966
+ }
1967
+ }
1968
+
1969
+ $chunks[] = substr( $string, 0, $pos + 1 );
1970
+ $string = substr( $string, $pos + 1 );
1971
+ $string_nullspace = substr( $string_nullspace, $pos + 1 );
1972
+ }
1973
+
1974
+ if ( $string ) {
1975
+ $chunks[] = $string;
1976
+ }
1977
+
1978
+ return $chunks;
1979
+ }
1980
+
1981
+ /**
1982
+ * Adds rel nofollow string to all HTML A elements in content.
1983
+ *
1984
+ * @since 1.5.0
1985
+ *
1986
+ * @param string $text Content that may contain HTML A elements.
1987
+ * @return string Converted content.
1988
+ */
1989
+ function wp_rel_nofollow( $text ) {
1990
+ // This is a pre save filter, so text is already escaped.
1991
+ $text = stripslashes($text);
1992
+ $text = preg_replace_callback('|<a (.+?)>|i', 'wp_rel_nofollow_callback', $text);
1993
+ $text = wp_slash($text);
1994
+ return $text;
1995
+ }
1996
+
1997
+ /**
1998
+ * Callback to add rel=nofollow string to HTML A element.
1999
+ *
2000
+ * Will remove already existing rel="nofollow" and rel='nofollow' from the
2001
+ * string to prevent from invalidating (X)HTML.
2002
+ *
2003
+ * @since 2.3.0
2004
+ *
2005
+ * @param array $matches Single Match
2006
+ * @return string HTML A Element with rel nofollow.
2007
+ */
2008
+ function wp_rel_nofollow_callback( $matches ) {
2009
+ $text = $matches[1];
2010
+ $text = str_replace(array(' rel="nofollow"', " rel='nofollow'"), '', $text);
2011
+ return "<a $text rel=\"nofollow\">";
2012
+ }
2013
+
2014
+ /**
2015
+ * Convert one smiley code to the icon graphic file equivalent.
2016
+ *
2017
+ * Callback handler for {@link convert_smilies()}.
2018
+ * Looks up one smiley code in the $wpsmiliestrans global array and returns an
2019
+ * <img> string for that smiley.
2020
+ *
2021
+ * @global array $wpsmiliestrans
2022
+ * @since 2.8.0
2023
+ *
2024
+ * @param array $matches Single match. Smiley code to convert to image.
2025
+ * @return string Image string for smiley.
2026
+ */
2027
+ function translate_smiley( $matches ) {
2028
+ global $wpsmiliestrans;
2029
+
2030
+ if ( count( $matches ) == 0 )
2031
+ return '';
2032
+
2033
+ $smiley = trim( reset( $matches ) );
2034
+ $img = $wpsmiliestrans[ $smiley ];
2035
+
2036
+ /**
2037
+ * Filter the Smiley image URL before it's used in the image element.
2038
+ *
2039
+ * @since 2.9.0
2040
+ *
2041
+ * @param string $smiley_url URL for the smiley image.
2042
+ * @param string $img Filename for the smiley image.
2043
+ * @param string $site_url Site URL, as returned by site_url().
2044
+ */
2045
+ $src_url = apply_filters( 'smilies_src', includes_url( "images/smilies/$img" ), $img, site_url() );
2046
+
2047
+ return sprintf( '<img src="%s" alt="%s" class="wp-smiley" />', esc_url( $src_url ), esc_attr( $smiley ) );
2048
+ }
2049
+
2050
+ /**
2051
+ * Convert text equivalent of smilies to images.
2052
+ *
2053
+ * Will only convert smilies if the option 'use_smilies' is true and the global
2054
+ * used in the function isn't empty.
2055
+ *
2056
+ * @since 0.71
2057
+ * @uses $wp_smiliessearch
2058
+ *
2059
+ * @param string $text Content to convert smilies from text.
2060
+ * @return string Converted content with text smilies replaced with images.
2061
+ */
2062
+ function convert_smilies( $text ) {
2063
+ global $wp_smiliessearch;
2064
+ $output = '';
2065
+ if ( get_option( 'use_smilies' ) && ! empty( $wp_smiliessearch ) ) {
2066
+ // HTML loop taken from texturize function, could possible be consolidated
2067
+ $textarr = preg_split( '/(<.*>)/U', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // capture the tags as well as in between
2068
+ $stop = count( $textarr );// loop stuff
2069
+
2070
+ // Ignore proessing of specific tags
2071
+ $tags_to_ignore = 'code|pre|style|script|textarea';
2072
+ $ignore_block_element = '';
2073
+
2074
+ for ( $i = 0; $i < $stop; $i++ ) {
2075
+ $content = $textarr[$i];
2076
+
2077
+ // If we're in an ignore block, wait until we find its closing tag
2078
+ if ( '' == $ignore_block_element && preg_match( '/^<(' . $tags_to_ignore . ')>/', $content, $matches ) ) {
2079
+ $ignore_block_element = $matches[1];
2080
+ }
2081
+
2082
+ // If it's not a tag and not in ignore block
2083
+ if ( '' == $ignore_block_element && strlen( $content ) > 0 && '<' != $content[0] ) {
2084
+ $content = preg_replace_callback( $wp_smiliessearch, 'translate_smiley', $content );
2085
+ }
2086
+
2087
+ // did we exit ignore block
2088
+ if ( '' != $ignore_block_element && '</' . $ignore_block_element . '>' == $content ) {
2089
+ $ignore_block_element = '';
2090
+ }
2091
+
2092
+ $output .= $content;
2093
+ }
2094
+ } else {
2095
+ // return default text.
2096
+ $output = $text;
2097
+ }
2098
+ return $output;
2099
+ }
2100
+
2101
+ /**
2102
+ * Verifies that an email is valid.
2103
+ *
2104
+ * Does not grok i18n domains. Not RFC compliant.
2105
+ *
2106
+ * @since 0.71
2107
+ *
2108
+ * @param string $email Email address to verify.
2109
+ * @param boolean $deprecated Deprecated.
2110
+ * @return string|bool Either false or the valid email address.
2111
+ */
2112
+ function is_email( $email, $deprecated = false ) {
2113
+ if ( ! empty( $deprecated ) )
2114
+ _deprecated_argument( __FUNCTION__, '3.0' );
2115
+
2116
+ // Test for the minimum length the email can be
2117
+ if ( strlen( $email ) < 3 ) {
2118
+ /**
2119
+ * Filter whether an email address is valid.
2120
+ *
2121
+ * This filter is evaluated under several different contexts, such as 'email_too_short',
2122
+ * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
2123
+ * 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context.
2124
+ *
2125
+ * @since 2.8.0
2126
+ *
2127
+ * @param bool $is_email Whether the email address has passed the is_email() checks. Default false.
2128
+ * @param string $email The email address being checked.
2129
+ * @param string $message An explanatory message to the user.
2130
+ * @param string $context Context under which the email was tested.
2131
+ */
2132
+ return apply_filters( 'is_email', false, $email, 'email_too_short' );
2133
+ }
2134
+
2135
+ // Test for an @ character after the first position
2136
+ if ( strpos( $email, '@', 1 ) === false ) {
2137
+ /** This filter is documented in wp-includes/formatting.php */
2138
+ return apply_filters( 'is_email', false, $email, 'email_no_at' );
2139
+ }
2140
+
2141
+ // Split out the local and domain parts
2142
+ list( $local, $domain ) = explode( '@', $email, 2 );
2143
+
2144
+ // LOCAL PART
2145
+ // Test for invalid characters
2146
+ if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
2147
+ /** This filter is documented in wp-includes/formatting.php */
2148
+ return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
2149
+ }
2150
+
2151
+ // DOMAIN PART
2152
+ // Test for sequences of periods
2153
+ if ( preg_match( '/\.{2,}/', $domain ) ) {
2154
+ /** This filter is documented in wp-includes/formatting.php */
2155
+ return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
2156
+ }
2157
+
2158
+ // Test for leading and trailing periods and whitespace
2159
+ if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
2160
+ /** This filter is documented in wp-includes/formatting.php */
2161
+ return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
2162
+ }
2163
+
2164
+ // Split the domain into subs
2165
+ $subs = explode( '.', $domain );
2166
+
2167
+ // Assume the domain will have at least two subs
2168
+ if ( 2 > count( $subs ) ) {
2169
+ /** This filter is documented in wp-includes/formatting.php */
2170
+ return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
2171
+ }
2172
+
2173
+ // Loop through each sub
2174
+ foreach ( $subs as $sub ) {
2175
+ // Test for leading and trailing hyphens and whitespace
2176
+ if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
2177
+ /** This filter is documented in wp-includes/formatting.php */
2178
+ return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
2179
+ }
2180
+
2181
+ // Test for invalid characters
2182
+ if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) {
2183
+ /** This filter is documented in wp-includes/formatting.php */
2184
+ return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
2185
+ }
2186
+ }
2187
+
2188
+ // Congratulations your email made it!
2189
+ /** This filter is documented in wp-includes/formatting.php */
2190
+ return apply_filters( 'is_email', $email, $email, null );
2191
+ }
2192
+
2193
+ /**
2194
+ * Convert to ASCII from email subjects.
2195
+ *
2196
+ * @since 1.2.0
2197
+ *
2198
+ * @param string $string Subject line
2199
+ * @return string Converted string to ASCII
2200
+ */
2201
+ function wp_iso_descrambler($string) {
2202
+ /* this may only work with iso-8859-1, I'm afraid */
2203
+ if (!preg_match('#\=\?(.+)\?Q\?(.+)\?\=#i', $string, $matches)) {
2204
+ return $string;
2205
+ } else {
2206
+ $subject = str_replace('_', ' ', $matches[2]);
2207
+ $subject = preg_replace_callback('#\=([0-9a-f]{2})#i', '_wp_iso_convert', $subject);
2208
+ return $subject;
2209
+ }
2210
+ }
2211
+
2212
+ /**
2213
+ * Helper function to convert hex encoded chars to ASCII
2214
+ *
2215
+ * @since 3.1.0
2216
+ * @access private
2217
+ *
2218
+ * @param array $match The preg_replace_callback matches array
2219
+ * @return array Converted chars
2220
+ */
2221
+ function _wp_iso_convert( $match ) {
2222
+ return chr( hexdec( strtolower( $match[1] ) ) );
2223
+ }
2224
+
2225
+ /**
2226
+ * Returns a date in the GMT equivalent.
2227
+ *
2228
+ * Requires and returns a date in the Y-m-d H:i:s format. If there is a
2229
+ * timezone_string available, the date is assumed to be in that timezone,
2230
+ * otherwise it simply subtracts the value of the 'gmt_offset' option. Return
2231
+ * format can be overridden using the $format parameter.
2232
+ *
2233
+ * @since 1.2.0
2234
+ *
2235
+ * @uses get_option() to retrieve the value of 'gmt_offset'.
2236
+ * @param string $string The date to be converted.
2237
+ * @param string $format The format string for the returned date (default is Y-m-d H:i:s)
2238
+ * @return string GMT version of the date provided.
2239
+ */
2240
+ function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
2241
+ $tz = get_option( 'timezone_string' );
2242
+ if ( $tz ) {
2243
+ $datetime = date_create( $string, new DateTimeZone( $tz ) );
2244
+ if ( ! $datetime )
2245
+ return gmdate( $format, 0 );
2246
+ $datetime->setTimezone( new DateTimeZone( 'UTC' ) );
2247
+ $string_gmt = $datetime->format( $format );
2248
+ } else {
2249
+ if ( ! preg_match( '#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches ) )
2250
+ return gmdate( $format, 0 );
2251
+ $string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
2252
+ $string_gmt = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
2253
+ }
2254
+ return $string_gmt;
2255
+ }
2256
+
2257
+ /**
2258
+ * Converts a GMT date into the correct format for the blog.
2259
+ *
2260
+ * Requires and returns a date in the Y-m-d H:i:s format. If there is a
2261
+ * timezone_string available, the returned date is in that timezone, otherwise
2262
+ * it simply adds the value of gmt_offset. Return format can be overridden
2263
+ * using the $format parameter
2264
+ *
2265
+ * @since 1.2.0
2266
+ *
2267
+ * @param string $string The date to be converted.
2268
+ * @param string $format The format string for the returned date (default is Y-m-d H:i:s)
2269
+ * @return string Formatted date relative to the timezone / GMT offset.
2270
+ */
2271
+ function get_date_from_gmt( $string, $format = 'Y-m-d H:i:s' ) {
2272
+ $tz = get_option( 'timezone_string' );
2273
+ if ( $tz ) {
2274
+ $datetime = date_create( $string, new DateTimeZone( 'UTC' ) );
2275
+ if ( ! $datetime )
2276
+ return date( $format, 0 );
2277
+ $datetime->setTimezone( new DateTimeZone( $tz ) );
2278
+ $string_localtime = $datetime->format( $format );
2279
+ } else {
2280
+ if ( ! preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches) )
2281
+ return date( $format, 0 );
2282
+ $string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
2283
+ $string_localtime = gmdate( $format, $string_time + get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
2284
+ }
2285
+ return $string_localtime;
2286
+ }
2287
+
2288
+ /**
2289
+ * Computes an offset in seconds from an iso8601 timezone.
2290
+ *
2291
+ * @since 1.5.0
2292
+ *
2293
+ * @param string $timezone Either 'Z' for 0 offset or '±hhmm'.
2294
+ * @return int|float The offset in seconds.
2295
+ */
2296
+ function iso8601_timezone_to_offset($timezone) {
2297
+ // $timezone is either 'Z' or '[+|-]hhmm'
2298
+ if ($timezone == 'Z') {
2299
+ $offset = 0;
2300
+ } else {
2301
+ $sign = (substr($timezone, 0, 1) == '+') ? 1 : -1;
2302
+ $hours = intval(substr($timezone, 1, 2));
2303
+ $minutes = intval(substr($timezone, 3, 4)) / 60;
2304
+ $offset = $sign * HOUR_IN_SECONDS * ($hours + $minutes);
2305
+ }
2306
+ return $offset;
2307
+ }
2308
+
2309
+ /**
2310
+ * Converts an iso8601 date to MySQL DateTime format used by post_date[_gmt].
2311
+ *
2312
+ * @since 1.5.0
2313
+ *
2314
+ * @param string $date_string Date and time in ISO 8601 format {@link http://en.wikipedia.org/wiki/ISO_8601}.
2315
+ * @param string $timezone Optional. If set to GMT returns the time minus gmt_offset. Default is 'user'.
2316
+ * @return string The date and time in MySQL DateTime format - Y-m-d H:i:s.
2317
+ */
2318
+ function iso8601_to_datetime($date_string, $timezone = 'user') {
2319
+ $timezone = strtolower($timezone);
2320
+
2321
+ if ($timezone == 'gmt') {
2322
+
2323
+ preg_match('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', $date_string, $date_bits);
2324
+
2325
+ if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
2326
+ $offset = iso8601_timezone_to_offset($date_bits[7]);
2327
+ } else { // we don't have a timezone, so we assume user local timezone (not server's!)
2328
+ $offset = HOUR_IN_SECONDS * get_option('gmt_offset');
2329
+ }
2330
+
2331
+ $timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
2332
+ $timestamp -= $offset;
2333
+
2334
+ return gmdate('Y-m-d H:i:s', $timestamp);
2335
+
2336
+ } else if ($timezone == 'user') {
2337
+ return preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', '$1-$2-$3 $4:$5:$6', $date_string);
2338
+ }
2339
+ }
2340
+
2341
+ /**
2342
+ * Adds a element attributes to open links in new windows.
2343
+ *
2344
+ * Comment text in popup windows should be filtered through this. Right now it's
2345
+ * a moderately dumb function, ideally it would detect whether a target or rel
2346
+ * attribute was already there and adjust its actions accordingly.
2347
+ *
2348
+ * @since 0.71
2349
+ *
2350
+ * @param string $text Content to replace links to open in a new window.
2351
+ * @return string Content that has filtered links.
2352
+ */
2353
+ function popuplinks($text) {
2354
+ $text = preg_replace('/<a (.+?)>/i', "<a $1 target='_blank' rel='external'>", $text);
2355
+ return $text;
2356
+ }
2357
+
2358
+ /**
2359
+ * Strips out all characters that are not allowable in an email.
2360
+ *
2361
+ * @since 1.5.0
2362
+ *
2363
+ * @param string $email Email address to filter.
2364
+ * @return string Filtered email address.
2365
+ */
2366
+ function sanitize_email( $email ) {
2367
+ // Test for the minimum length the email can be
2368
+ if ( strlen( $email ) < 3 ) {
2369
+ /**
2370
+ * Filter a sanitized email address.
2371
+ *
2372
+ * This filter is evaluated under several contexts, including 'email_too_short',
2373
+ * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
2374
+ * 'domain_no_periods', 'domain_no_valid_subs', or no context.
2375
+ *
2376
+ * @since 2.8.0
2377
+ *
2378
+ * @param string $email The sanitized email address.
2379
+ * @param string $email The email address, as provided to sanitize_email().
2380
+ * @param string $message A message to pass to the user.
2381
+ */
2382
+ return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
2383
+ }
2384
+
2385
+ // Test for an @ character after the first position
2386
+ if ( strpos( $email, '@', 1 ) === false ) {
2387
+ /** This filter is documented in wp-includes/formatting.php */
2388
+ return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
2389
+ }
2390
+
2391
+ // Split out the local and domain parts
2392
+ list( $local, $domain ) = explode( '@', $email, 2 );
2393
+
2394
+ // LOCAL PART
2395
+ // Test for invalid characters
2396
+ $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
2397
+ if ( '' === $local ) {
2398
+ /** This filter is documented in wp-includes/formatting.php */
2399
+ return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
2400
+ }
2401
+
2402
+ // DOMAIN PART
2403
+ // Test for sequences of periods
2404
+ $domain = preg_replace( '/\.{2,}/', '', $domain );
2405
+ if ( '' === $domain ) {
2406
+ /** This filter is documented in wp-includes/formatting.php */
2407
+ return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
2408
+ }
2409
+
2410
+ // Test for leading and trailing periods and whitespace
2411
+ $domain = trim( $domain, " \t\n\r\0\x0B." );
2412
+ if ( '' === $domain ) {
2413
+ /** This filter is documented in wp-includes/formatting.php */
2414
+ return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
2415
+ }
2416
+
2417
+ // Split the domain into subs
2418
+ $subs = explode( '.', $domain );
2419
+
2420
+ // Assume the domain will have at least two subs
2421
+ if ( 2 > count( $subs ) ) {
2422
+ /** This filter is documented in wp-includes/formatting.php */
2423
+ return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
2424
+ }
2425
+
2426
+ // Create an array that will contain valid subs
2427
+ $new_subs = array();
2428
+
2429
+ // Loop through each sub
2430
+ foreach ( $subs as $sub ) {
2431
+ // Test for leading and trailing hyphens
2432
+ $sub = trim( $sub, " \t\n\r\0\x0B-" );
2433
+
2434
+ // Test for invalid characters
2435
+ $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub );
2436
+
2437
+ // If there's anything left, add it to the valid subs
2438
+ if ( '' !== $sub ) {
2439
+ $new_subs[] = $sub;
2440
+ }
2441
+ }
2442
+
2443
+ // If there aren't 2 or more valid subs
2444
+ if ( 2 > count( $new_subs ) ) {
2445
+ /** This filter is documented in wp-includes/formatting.php */
2446
+ return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
2447
+ }
2448
+
2449
+ // Join valid subs into the new domain
2450
+ $domain = join( '.', $new_subs );
2451
+
2452
+ // Put the email back together
2453
+ $email = $local . '@' . $domain;
2454
+
2455
+ // Congratulations your email made it!
2456
+ /** This filter is documented in wp-includes/formatting.php */
2457
+ return apply_filters( 'sanitize_email', $email, $email, null );
2458
+ }
2459
+
2460
+ /**
2461
+ * Determines the difference between two timestamps.
2462
+ *
2463
+ * The difference is returned in a human readable format such as "1 hour",
2464
+ * "5 mins", "2 days".
2465
+ *
2466
+ * @since 1.5.0
2467
+ *
2468
+ * @param int $from Unix timestamp from which the difference begins.
2469
+ * @param int $to Optional. Unix timestamp to end the time difference. Default becomes time() if not set.
2470
+ * @return string Human readable time difference.
2471
+ */
2472
+ function human_time_diff( $from, $to = '' ) {
2473
+ if ( empty( $to ) ) {
2474
+ $to = time();
2475
+ }
2476
+
2477
+ $diff = (int) abs( $to - $from );
2478
+
2479
+ if ( $diff < HOUR_IN_SECONDS ) {
2480
+ $mins = round( $diff / MINUTE_IN_SECONDS );
2481
+ if ( $mins <= 1 )
2482
+ $mins = 1;
2483
+ /* translators: min=minute */
2484
+ $since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
2485
+ } elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
2486
+ $hours = round( $diff / HOUR_IN_SECONDS );
2487
+ if ( $hours <= 1 )
2488
+ $hours = 1;
2489
+ $since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
2490
+ } elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
2491
+ $days = round( $diff / DAY_IN_SECONDS );
2492
+ if ( $days <= 1 )
2493
+ $days = 1;
2494
+ $since = sprintf( _n( '%s day', '%s days', $days ), $days );
2495
+ } elseif ( $diff < 30 * DAY_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
2496
+ $weeks = round( $diff / WEEK_IN_SECONDS );
2497
+ if ( $weeks <= 1 )
2498
+ $weeks = 1;
2499
+ $since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks );
2500
+ } elseif ( $diff < YEAR_IN_SECONDS && $diff >= 30 * DAY_IN_SECONDS ) {
2501
+ $months = round( $diff / ( 30 * DAY_IN_SECONDS ) );
2502
+ if ( $months <= 1 )
2503
+ $months = 1;
2504
+ $since = sprintf( _n( '%s month', '%s months', $months ), $months );
2505
+ } elseif ( $diff >= YEAR_IN_SECONDS ) {
2506
+ $years = round( $diff / YEAR_IN_SECONDS );
2507
+ if ( $years <= 1 )
2508
+ $years = 1;
2509
+ $since = sprintf( _n( '%s year', '%s years', $years ), $years );
2510
+ }
2511
+
2512
+ /**
2513
+ * Filter the human readable difference between two timestamps.
2514
+ *
2515
+ * @since 4.0.0
2516
+ *
2517
+ * @param string $since The difference in human readable text.
2518
+ * @param int $diff The difference in seconds.
2519
+ * @param int $from Unix timestamp from which the difference begins.
2520
+ * @param int $to Unix timestamp to end the time difference.
2521
+ */
2522
+ return apply_filters( 'human_time_diff', $since, $diff, $from, $to );
2523
+ }
2524
+
2525
+ /**
2526
+ * Generates an excerpt from the content, if needed.
2527
+ *
2528
+ * The excerpt word amount will be 55 words and if the amount is greater than
2529
+ * that, then the string ' [&hellip;]' will be appended to the excerpt. If the string
2530
+ * is less than 55 words, then the content will be returned as is.
2531
+ *
2532
+ * The 55 word limit can be modified by plugins/themes using the excerpt_length filter
2533
+ * The ' [&hellip;]' string can be modified by plugins/themes using the excerpt_more filter
2534
+ *
2535
+ * @since 1.5.0
2536
+ *
2537
+ * @param string $text Optional. The excerpt. If set to empty, an excerpt is generated.
2538
+ * @return string The excerpt.
2539
+ */
2540
+ function wp_trim_excerpt($text = '') {
2541
+ $raw_excerpt = $text;
2542
+ if ( '' == $text ) {
2543
+ $text = get_the_content('');
2544
+
2545
+ $text = strip_shortcodes( $text );
2546
+
2547
+ /** This filter is documented in wp-includes/post-template.php */
2548
+ $text = apply_filters( 'the_content', $text );
2549
+ $text = str_replace(']]>', ']]&gt;', $text);
2550
+
2551
+ /**
2552
+ * Filter the number of words in an excerpt.
2553
+ *
2554
+ * @since 2.7.0
2555
+ *
2556
+ * @param int $number The number of words. Default 55.
2557
+ */
2558
+ $excerpt_length = apply_filters( 'excerpt_length', 55 );
2559
+ /**
2560
+ * Filter the string in the "more" link displayed after a trimmed excerpt.
2561
+ *
2562
+ * @since 2.9.0
2563
+ *
2564
+ * @param string $more_string The string shown within the more link.
2565
+ */
2566
+ $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[&hellip;]' );
2567
+ $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
2568
+ }
2569
+ /**
2570
+ * Filter the trimmed excerpt string.
2571
+ *
2572
+ * @since 2.8.0
2573
+ *
2574
+ * @param string $text The trimmed text.
2575
+ * @param string $raw_excerpt The text prior to trimming.
2576
+ */
2577
+ return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt );
2578
+ }
2579
+
2580
+ /**
2581
+ * Trims text to a certain number of words.
2582
+ *
2583
+ * This function is localized. For languages that count 'words' by the individual
2584
+ * character (such as East Asian languages), the $num_words argument will apply
2585
+ * to the number of individual characters.
2586
+ *
2587
+ * @since 3.3.0
2588
+ *
2589
+ * @param string $text Text to trim.
2590
+ * @param int $num_words Number of words. Default 55.
2591
+ * @param string $more Optional. What to append if $text needs to be trimmed. Default '&hellip;'.
2592
+ * @return string Trimmed text.
2593
+ */
2594
+ function wp_trim_words( $text, $num_words = 55, $more = null ) {
2595
+ if ( null === $more )
2596
+ $more = __( '&hellip;' );
2597
+ $original_text = $text;
2598
+ $text = wp_strip_all_tags( $text );
2599
+ /* translators: If your word count is based on single characters (East Asian characters),
2600
+ enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
2601
+ if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
2602
+ $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
2603
+ preg_match_all( '/./u', $text, $words_array );
2604
+ $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
2605
+ $sep = '';
2606
+ } else {
2607
+ $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
2608
+ $sep = ' ';
2609
+ }
2610
+ if ( count( $words_array ) > $num_words ) {
2611
+ array_pop( $words_array );
2612
+ $text = implode( $sep, $words_array );
2613
+ $text = $text . $more;
2614
+ } else {
2615
+ $text = implode( $sep, $words_array );
2616
+ }
2617
+ /**
2618
+ * Filter the text content after words have been trimmed.
2619
+ *
2620
+ * @since 3.3.0
2621
+ *
2622
+ * @param string $text The trimmed text.
2623
+ * @param int $num_words The number of words to trim the text to. Default 5.
2624
+ * @param string $more An optional string to append to the end of the trimmed text, e.g. &hellip;.
2625
+ * @param string $original_text The text before it was trimmed.
2626
+ */
2627
+ return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
2628
+ }
2629
+
2630
+ /**
2631
+ * Converts named entities into numbered entities.
2632
+ *
2633
+ * @since 1.5.1
2634
+ *
2635
+ * @param string $text The text within which entities will be converted.
2636
+ * @return string Text with converted entities.
2637
+ */
2638
+ function ent2ncr($text) {
2639
+
2640
+ /**
2641
+ * Filter text before named entities are converted into numbered entities.
2642
+ *
2643
+ * A non-null string must be returned for the filter to be evaluated.
2644
+ *
2645
+ * @since 3.3.0
2646
+ *
2647
+ * @param null $converted_text The text to be converted. Default null.
2648
+ * @param string $text The text prior to entity conversion.
2649
+ */
2650
+ $filtered = apply_filters( 'pre_ent2ncr', null, $text );
2651
+ if( null !== $filtered )
2652
+ return $filtered;
2653
+
2654
+ $to_ncr = array(
2655
+ '&quot;' => '&#34;',
2656
+ '&amp;' => '&#38;',
2657
+ '&lt;' => '&#60;',
2658
+ '&gt;' => '&#62;',
2659
+ '|' => '&#124;',
2660
+ '&nbsp;' => '&#160;',
2661
+ '&iexcl;' => '&#161;',
2662
+ '&cent;' => '&#162;',
2663
+ '&pound;' => '&#163;',
2664
+ '&curren;' => '&#164;',
2665
+ '&yen;' => '&#165;',
2666
+ '&brvbar;' => '&#166;',
2667
+ '&brkbar;' => '&#166;',
2668
+ '&sect;' => '&#167;',
2669
+ '&uml;' => '&#168;',
2670
+ '&die;' => '&#168;',
2671
+ '&copy;' => '&#169;',
2672
+ '&ordf;' => '&#170;',
2673
+ '&laquo;' => '&#171;',
2674
+ '&not;' => '&#172;',
2675
+ '&shy;' => '&#173;',
2676
+ '&reg;' => '&#174;',
2677
+ '&macr;' => '&#175;',
2678
+ '&hibar;' => '&#175;',
2679
+ '&deg;' => '&#176;',
2680
+ '&plusmn;' => '&#177;',
2681
+ '&sup2;' => '&#178;',
2682
+ '&sup3;' => '&#179;',
2683
+ '&acute;' => '&#180;',
2684
+ '&micro;' => '&#181;',
2685
+ '&para;' => '&#182;',
2686
+ '&middot;' => '&#183;',
2687
+ '&cedil;' => '&#184;',
2688
+ '&sup1;' => '&#185;',
2689
+ '&ordm;' => '&#186;',
2690
+ '&raquo;' => '&#187;',
2691
+ '&frac14;' => '&#188;',
2692
+ '&frac12;' => '&#189;',
2693
+ '&frac34;' => '&#190;',
2694
+ '&iquest;' => '&#191;',
2695
+ '&Agrave;' => '&#192;',
2696
+ '&Aacute;' => '&#193;',
2697
+ '&Acirc;' => '&#194;',
2698
+ '&Atilde;' => '&#195;',
2699
+ '&Auml;' => '&#196;',
2700
+ '&Aring;' => '&#197;',
2701
+ '&AElig;' => '&#198;',
2702
+ '&Ccedil;' => '&#199;',
2703
+ '&Egrave;' => '&#200;',
2704
+ '&Eacute;' => '&#201;',
2705
+ '&Ecirc;' => '&#202;',
2706
+ '&Euml;' => '&#203;',
2707
+ '&Igrave;' => '&#204;',
2708
+ '&Iacute;' => '&#205;',
2709
+ '&Icirc;' => '&#206;',
2710
+ '&Iuml;' => '&#207;',
2711
+ '&ETH;' => '&#208;',
2712
+ '&Ntilde;' => '&#209;',
2713
+ '&Ograve;' => '&#210;',
2714
+ '&Oacute;' => '&#211;',
2715
+ '&Ocirc;' => '&#212;',
2716
+ '&Otilde;' => '&#213;',
2717
+ '&Ouml;' => '&#214;',
2718
+ '&times;' => '&#215;',
2719
+ '&Oslash;' => '&#216;',
2720
+ '&Ugrave;' => '&#217;',
2721
+ '&Uacute;' => '&#218;',
2722
+ '&Ucirc;' => '&#219;',
2723
+ '&Uuml;' => '&#220;',
2724
+ '&Yacute;' => '&#221;',
2725
+ '&THORN;' => '&#222;',
2726
+ '&szlig;' => '&#223;',
2727
+ '&agrave;' => '&#224;',
2728
+ '&aacute;' => '&#225;',
2729
+ '&acirc;' => '&#226;',
2730
+ '&atilde;' => '&#227;',
2731
+ '&auml;' => '&#228;',
2732
+ '&aring;' => '&#229;',
2733
+ '&aelig;' => '&#230;',
2734
+ '&ccedil;' => '&#231;',
2735
+ '&egrave;' => '&#232;',
2736
+ '&eacute;' => '&#233;',
2737
+ '&ecirc;' => '&#234;',
2738
+ '&euml;' => '&#235;',
2739
+ '&igrave;' => '&#236;',
2740
+ '&iacute;' => '&#237;',
2741
+ '&icirc;' => '&#238;',
2742
+ '&iuml;' => '&#239;',
2743
+ '&eth;' => '&#240;',
2744
+ '&ntilde;' => '&#241;',
2745
+ '&ograve;' => '&#242;',
2746
+ '&oacute;' => '&#243;',
2747
+ '&ocirc;' => '&#244;',
2748
+ '&otilde;' => '&#245;',
2749
+ '&ouml;' => '&#246;',
2750
+ '&divide;' => '&#247;',
2751
+ '&oslash;' => '&#248;',
2752
+ '&ugrave;' => '&#249;',
2753
+ '&uacute;' => '&#250;',
2754
+ '&ucirc;' => '&#251;',
2755
+ '&uuml;' => '&#252;',
2756
+ '&yacute;' => '&#253;',
2757
+ '&thorn;' => '&#254;',
2758
+ '&yuml;' => '&#255;',
2759
+ '&OElig;' => '&#338;',
2760
+ '&oelig;' => '&#339;',
2761
+ '&Scaron;' => '&#352;',
2762
+ '&scaron;' => '&#353;',
2763
+ '&Yuml;' => '&#376;',
2764
+ '&fnof;' => '&#402;',
2765
+ '&circ;' => '&#710;',
2766
+ '&tilde;' => '&#732;',
2767
+ '&Alpha;' => '&#913;',
2768
+ '&Beta;' => '&#914;',
2769
+ '&Gamma;' => '&#915;',
2770
+ '&Delta;' => '&#916;',
2771
+ '&Epsilon;' => '&#917;',
2772
+ '&Zeta;' => '&#918;',
2773
+ '&Eta;' => '&#919;',
2774
+ '&Theta;' => '&#920;',
2775
+ '&Iota;' => '&#921;',
2776
+ '&Kappa;' => '&#922;',
2777
+ '&Lambda;' => '&#923;',
2778
+ '&Mu;' => '&#924;',
2779
+ '&Nu;' => '&#925;',
2780
+ '&Xi;' => '&#926;',
2781
+ '&Omicron;' => '&#927;',
2782
+ '&Pi;' => '&#928;',
2783
+ '&Rho;' => '&#929;',
2784
+ '&Sigma;' => '&#931;',
2785
+ '&Tau;' => '&#932;',
2786
+ '&Upsilon;' => '&#933;',
2787
+ '&Phi;' => '&#934;',
2788
+ '&Chi;' => '&#935;',
2789
+ '&Psi;' => '&#936;',
2790
+ '&Omega;' => '&#937;',
2791
+ '&alpha;' => '&#945;',
2792
+ '&beta;' => '&#946;',
2793
+ '&gamma;' => '&#947;',
2794
+ '&delta;' => '&#948;',
2795
+ '&epsilon;' => '&#949;',
2796
+ '&zeta;' => '&#950;',
2797
+ '&eta;' => '&#951;',
2798
+ '&theta;' => '&#952;',
2799
+ '&iota;' => '&#953;',
2800
+ '&kappa;' => '&#954;',
2801
+ '&lambda;' => '&#955;',
2802
+ '&mu;' => '&#956;',
2803
+ '&nu;' => '&#957;',
2804
+ '&xi;' => '&#958;',
2805
+ '&omicron;' => '&#959;',
2806
+ '&pi;' => '&#960;',
2807
+ '&rho;' => '&#961;',
2808
+ '&sigmaf;' => '&#962;',
2809
+ '&sigma;' => '&#963;',
2810
+ '&tau;' => '&#964;',
2811
+ '&upsilon;' => '&#965;',
2812
+ '&phi;' => '&#966;',
2813
+ '&chi;' => '&#967;',
2814
+ '&psi;' => '&#968;',
2815
+ '&omega;' => '&#969;',
2816
+ '&thetasym;' => '&#977;',
2817
+ '&upsih;' => '&#978;',
2818
+ '&piv;' => '&#982;',
2819
+ '&ensp;' => '&#8194;',
2820
+ '&emsp;' => '&#8195;',
2821
+ '&thinsp;' => '&#8201;',
2822
+ '&zwnj;' => '&#8204;',
2823
+ '&zwj;' => '&#8205;',
2824
+ '&lrm;' => '&#8206;',
2825
+ '&rlm;' => '&#8207;',
2826
+ '&ndash;' => '&#8211;',
2827
+ '&mdash;' => '&#8212;',
2828
+ '&lsquo;' => '&#8216;',
2829
+ '&rsquo;' => '&#8217;',
2830
+ '&sbquo;' => '&#8218;',
2831
+ '&ldquo;' => '&#8220;',
2832
+ '&rdquo;' => '&#8221;',
2833
+ '&bdquo;' => '&#8222;',
2834
+ '&dagger;' => '&#8224;',
2835
+ '&Dagger;' => '&#8225;',
2836
+ '&bull;' => '&#8226;',
2837
+ '&hellip;' => '&#8230;',
2838
+ '&permil;' => '&#8240;',
2839
+ '&prime;' => '&#8242;',
2840
+ '&Prime;' => '&#8243;',
2841
+ '&lsaquo;' => '&#8249;',
2842
+ '&rsaquo;' => '&#8250;',
2843
+ '&oline;' => '&#8254;',
2844
+ '&frasl;' => '&#8260;',
2845
+ '&euro;' => '&#8364;',
2846
+ '&image;' => '&#8465;',
2847
+ '&weierp;' => '&#8472;',
2848
+ '&real;' => '&#8476;',
2849
+ '&trade;' => '&#8482;',
2850
+ '&alefsym;' => '&#8501;',
2851
+ '&crarr;' => '&#8629;',
2852
+ '&lArr;' => '&#8656;',
2853
+ '&uArr;' => '&#8657;',
2854
+ '&rArr;' => '&#8658;',
2855
+ '&dArr;' => '&#8659;',
2856
+ '&hArr;' => '&#8660;',
2857
+ '&forall;' => '&#8704;',
2858
+ '&part;' => '&#8706;',
2859
+ '&exist;' => '&#8707;',
2860
+ '&empty;' => '&#8709;',
2861
+ '&nabla;' => '&#8711;',
2862
+ '&isin;' => '&#8712;',
2863
+ '&notin;' => '&#8713;',
2864
+ '&ni;' => '&#8715;',
2865
+ '&prod;' => '&#8719;',
2866
+ '&sum;' => '&#8721;',
2867
+ '&minus;' => '&#8722;',
2868
+ '&lowast;' => '&#8727;',
2869
+ '&radic;' => '&#8730;',
2870
+ '&prop;' => '&#8733;',
2871
+ '&infin;' => '&#8734;',
2872
+ '&ang;' => '&#8736;',
2873
+ '&and;' => '&#8743;',
2874
+ '&or;' => '&#8744;',
2875
+ '&cap;' => '&#8745;',
2876
+ '&cup;' => '&#8746;',
2877
+ '&int;' => '&#8747;',
2878
+ '&there4;' => '&#8756;',
2879
+ '&sim;' => '&#8764;',
2880
+ '&cong;' => '&#8773;',
2881
+ '&asymp;' => '&#8776;',
2882
+ '&ne;' => '&#8800;',
2883
+ '&equiv;' => '&#8801;',
2884
+ '&le;' => '&#8804;',
2885
+ '&ge;' => '&#8805;',
2886
+ '&sub;' => '&#8834;',
2887
+ '&sup;' => '&#8835;',
2888
+ '&nsub;' => '&#8836;',
2889
+ '&sube;' => '&#8838;',
2890
+ '&supe;' => '&#8839;',
2891
+ '&oplus;' => '&#8853;',
2892
+ '&otimes;' => '&#8855;',
2893
+ '&perp;' => '&#8869;',
2894
+ '&sdot;' => '&#8901;',
2895
+ '&lceil;' => '&#8968;',
2896
+ '&rceil;' => '&#8969;',
2897
+ '&lfloor;' => '&#8970;',
2898
+ '&rfloor;' => '&#8971;',
2899
+ '&lang;' => '&#9001;',
2900
+ '&rang;' => '&#9002;',
2901
+ '&larr;' => '&#8592;',
2902
+ '&uarr;' => '&#8593;',
2903
+ '&rarr;' => '&#8594;',
2904
+ '&darr;' => '&#8595;',
2905
+ '&harr;' => '&#8596;',
2906
+ '&loz;' => '&#9674;',
2907
+ '&spades;' => '&#9824;',
2908
+ '&clubs;' => '&#9827;',
2909
+ '&hearts;' => '&#9829;',
2910
+ '&diams;' => '&#9830;'
2911
+ );
2912
+
2913
+ return str_replace( array_keys($to_ncr), array_values($to_ncr), $text );
2914
+ }
2915
+
2916
+ /**
2917
+ * Formats text for the rich text editor.
2918
+ *
2919
+ * The filter 'richedit_pre' is applied here. If $text is empty the filter will
2920
+ * be applied to an empty string.
2921
+ *
2922
+ * @since 2.0.0
2923
+ *
2924
+ * @param string $text The text to be formatted.
2925
+ * @return string The formatted text after filter is applied.
2926
+ */
2927
+ function wp_richedit_pre($text) {
2928
+ if ( empty( $text ) ) {
2929
+ /**
2930
+ * Filter text returned for the rich text editor.
2931
+ *
2932
+ * This filter is first evaluated, and the value returned, if an empty string
2933
+ * is passed to wp_richedit_pre(). If an empty string is passed, it results
2934
+ * in a break tag and line feed.
2935
+ *
2936
+ * If a non-empty string is passed, the filter is evaluated on the wp_richedit_pre()
2937
+ * return after being formatted.
2938
+ *
2939
+ * @since 2.0.0
2940
+ *
2941
+ * @param string $output Text for the rich text editor.
2942
+ */
2943
+ return apply_filters( 'richedit_pre', '' );
2944
+ }
2945
+
2946
+ $output = convert_chars($text);
2947
+ $output = wpautop($output);
2948
+ $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) );
2949
+
2950
+ /** This filter is documented in wp-includes/formatting.php */
2951
+ return apply_filters( 'richedit_pre', $output );
2952
+ }
2953
+
2954
+ /**
2955
+ * Formats text for the HTML editor.
2956
+ *
2957
+ * Unless $output is empty it will pass through htmlspecialchars before the
2958
+ * 'htmledit_pre' filter is applied.
2959
+ *
2960
+ * @since 2.5.0
2961
+ *
2962
+ * @param string $output The text to be formatted.
2963
+ * @return string Formatted text after filter applied.
2964
+ */
2965
+ function wp_htmledit_pre($output) {
2966
+ if ( !empty($output) )
2967
+ $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > &
2968
+
2969
+ /**
2970
+ * Filter the text before it is formatted for the HTML editor.
2971
+ *
2972
+ * @since 2.5.0
2973
+ *
2974
+ * @param string $output The HTML-formatted text.
2975
+ */
2976
+ return apply_filters( 'htmledit_pre', $output );
2977
+ }
2978
+
2979
+ /**
2980
+ * Perform a deep string replace operation to ensure the values in $search are no longer present
2981
+ *
2982
+ * Repeats the replacement operation until it no longer replaces anything so as to remove "nested" values
2983
+ * e.g. $subject = '%0%0%0DDD', $search ='%0D', $result ='' rather than the '%0%0DD' that
2984
+ * str_replace would return
2985
+ *
2986
+ * @since 2.8.1
2987
+ * @access private
2988
+ *
2989
+ * @param string|array $search The value being searched for, otherwise known as the needle. An array may be used to designate multiple needles.
2990
+ * @param string $subject The string being searched and replaced on, otherwise known as the haystack.
2991
+ * @return string The string with the replaced svalues.
2992
+ */
2993
+ function _deep_replace( $search, $subject ) {
2994
+ $subject = (string) $subject;
2995
+
2996
+ $count = 1;
2997
+ while ( $count ) {
2998
+ $subject = str_replace( $search, '', $subject, $count );
2999
+ }
3000
+
3001
+ return $subject;
3002
+ }
3003
+
3004
+ /**
3005
+ * Escapes data for use in a MySQL query.
3006
+ *
3007
+ * Usually you should prepare queries using wpdb::prepare().
3008
+ * Sometimes, spot-escaping is required or useful. One example
3009
+ * is preparing an array for use in an IN clause.
3010
+ *
3011
+ * @since 2.8.0
3012
+ * @param string|array $data Unescaped data
3013
+ * @return string|array Escaped data
3014
+ */
3015
+ function esc_sql( $data ) {
3016
+ global $wpdb;
3017
+ return $wpdb->_escape( $data );
3018
+ }
3019
+
3020
+ /**
3021
+ * Checks and cleans a URL.
3022
+ *
3023
+ * A number of characters are removed from the URL. If the URL is for displaying
3024
+ * (the default behaviour) ampersands are also replaced. The 'clean_url' filter
3025
+ * is applied to the returned cleaned URL.
3026
+ *
3027
+ * @since 2.8.0
3028
+ * @uses wp_kses_bad_protocol() To only permit protocols in the URL set
3029
+ * via $protocols or the common ones set in the function.
3030
+ *
3031
+ * @param string $url The URL to be cleaned.
3032
+ * @param array $protocols Optional. An array of acceptable protocols.
3033
+ * Defaults to 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn' if not set.
3034
+ * @param string $_context Private. Use esc_url_raw() for database usage.
3035
+ * @return string The cleaned $url after the 'clean_url' filter is applied.
3036
+ */
3037
+ function esc_url( $url, $protocols = null, $_context = 'display' ) {
3038
+ $original_url = $url;
3039
+
3040
+ if ( '' == $url )
3041
+ return $url;
3042
+ $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
3043
+ $strip = array('%0d', '%0a', '%0D', '%0A');
3044
+ $url = _deep_replace($strip, $url);
3045
+ $url = str_replace(';//', '://', $url);
3046
+ /* If the URL doesn't appear to contain a scheme, we
3047
+ * presume it needs http:// appended (unless a relative
3048
+ * link starting with /, # or ? or a php file).
3049
+ */
3050
+ if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
3051
+ ! preg_match('/^[a-z0-9-]+?\.php/i', $url) )
3052
+ $url = 'http://' . $url;
3053
+
3054
+ // Replace ampersands and single quotes only when displaying.
3055
+ if ( 'display' == $_context ) {
3056
+ $url = wp_kses_normalize_entities( $url );
3057
+ $url = str_replace( '&amp;', '&#038;', $url );
3058
+ $url = str_replace( "'", '&#039;', $url );
3059
+ }
3060
+
3061
+ if ( '/' === $url[0] ) {
3062
+ $good_protocol_url = $url;
3063
+ } else {
3064
+ if ( ! is_array( $protocols ) )
3065
+ $protocols = wp_allowed_protocols();
3066
+ $good_protocol_url = wp_kses_bad_protocol( $url, $protocols );
3067
+ if ( strtolower( $good_protocol_url ) != strtolower( $url ) )
3068
+ return '';
3069
+ }
3070
+
3071
+ /**
3072
+ * Filter a string cleaned and escaped for output as a URL.
3073
+ *
3074
+ * @since 2.3.0
3075
+ *
3076
+ * @param string $good_protocol_url The cleaned URL to be returned.
3077
+ * @param string $original_url The URL prior to cleaning.
3078
+ * @param string $_context If 'display', replace ampersands and single quotes only.
3079
+ */
3080
+ return apply_filters( 'clean_url', $good_protocol_url, $original_url, $_context );
3081
+ }
3082
+
3083
+ /**
3084
+ * Performs esc_url() for database usage.
3085
+ *
3086
+ * @since 2.8.0
3087
+ * @uses esc_url()
3088
+ *
3089
+ * @param string $url The URL to be cleaned.
3090
+ * @param array $protocols An array of acceptable protocols.
3091
+ * @return string The cleaned URL.
3092
+ */
3093
+ function esc_url_raw( $url, $protocols = null ) {
3094
+ return esc_url( $url, $protocols, 'db' );
3095
+ }
3096
+
3097
+ /**
3098
+ * Convert entities, while preserving already-encoded entities.
3099
+ *
3100
+ * @link http://www.php.net/htmlentities Borrowed from the PHP Manual user notes.
3101
+ *
3102
+ * @since 1.2.2
3103
+ *
3104
+ * @param string $myHTML The text to be converted.
3105
+ * @return string Converted text.
3106
+ */
3107
+ function htmlentities2($myHTML) {
3108
+ $translation_table = get_html_translation_table( HTML_ENTITIES, ENT_QUOTES );
3109
+ $translation_table[chr(38)] = '&';
3110
+ return preg_replace( "/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/", "&amp;", strtr($myHTML, $translation_table) );
3111
+ }
3112
+
3113
+ /**
3114
+ * Escape single quotes, htmlspecialchar " < > &, and fix line endings.
3115
+ *
3116
+ * Escapes text strings for echoing in JS. It is intended to be used for inline JS
3117
+ * (in a tag attribute, for example onclick="..."). Note that the strings have to
3118
+ * be in single quotes. The filter 'js_escape' is also applied here.
3119
+ *
3120
+ * @since 2.8.0
3121
+ *
3122
+ * @param string $text The text to be escaped.
3123
+ * @return string Escaped text.
3124
+ */
3125
+ function esc_js( $text ) {
3126
+ $safe_text = wp_check_invalid_utf8( $text );
3127
+ $safe_text = _wp_specialchars( $safe_text, ENT_COMPAT );
3128
+ $safe_text = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes( $safe_text ) );
3129
+ $safe_text = str_replace( "\r", '', $safe_text );
3130
+ $safe_text = str_replace( "\n", '\\n', addslashes( $safe_text ) );
3131
+ /**
3132
+ * Filter a string cleaned and escaped for output in JavaScript.
3133
+ *
3134
+ * Text passed to esc_js() is stripped of invalid or special characters,
3135
+ * and properly slashed for output.
3136
+ *
3137
+ * @since 2.0.6
3138
+ *
3139
+ * @param string $safe_text The text after it has been escaped.
3140
+ * @param string $text The text prior to being escaped.
3141
+ */
3142
+ return apply_filters( 'js_escape', $safe_text, $text );
3143
+ }
3144
+
3145
+ /**
3146
+ * Escaping for HTML blocks.
3147
+ *
3148
+ * @since 2.8.0
3149
+ *
3150
+ * @param string $text
3151
+ * @return string
3152
+ */
3153
+ function esc_html( $text ) {
3154
+ $safe_text = wp_check_invalid_utf8( $text );
3155
+ $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
3156
+ /**
3157
+ * Filter a string cleaned and escaped for output in HTML.
3158
+ *
3159
+ * Text passed to esc_html() is stripped of invalid or special characters
3160
+ * before output.
3161
+ *
3162
+ * @since 2.8.0
3163
+ *
3164
+ * @param string $safe_text The text after it has been escaped.
3165
+ * @param string $text The text prior to being escaped.
3166
+ */
3167
+ return apply_filters( 'esc_html', $safe_text, $text );
3168
+ }
3169
+
3170
+ /**
3171
+ * Escaping for HTML attributes.
3172
+ *
3173
+ * @since 2.8.0
3174
+ *
3175
+ * @param string $text
3176
+ * @return string
3177
+ */
3178
+ function esc_attr( $text ) {
3179
+ $safe_text = wp_check_invalid_utf8( $text );
3180
+ $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
3181
+ /**
3182
+ * Filter a string cleaned and escaped for output in an HTML attribute.
3183
+ *
3184
+ * Text passed to esc_attr() is stripped of invalid or special characters
3185
+ * before output.
3186
+ *
3187
+ * @since 2.0.6
3188
+ *
3189
+ * @param string $safe_text The text after it has been escaped.
3190
+ * @param string $text The text prior to being escaped.
3191
+ */
3192
+ return apply_filters( 'attribute_escape', $safe_text, $text );
3193
+ }
3194
+
3195
+ /**
3196
+ * Escaping for textarea values.
3197
+ *
3198
+ * @since 3.1.0
3199
+ *
3200
+ * @param string $text
3201
+ * @return string
3202
+ */
3203
+ function esc_textarea( $text ) {
3204
+ $safe_text = htmlspecialchars( $text, ENT_QUOTES, get_option( 'blog_charset' ) );
3205
+ /**
3206
+ * Filter a string cleaned and escaped for output in a textarea element.
3207
+ *
3208
+ * @since 3.1.0
3209
+ *
3210
+ * @param string $safe_text The text after it has been escaped.
3211
+ * @param string $text The text prior to being escaped.
3212
+ */
3213
+ return apply_filters( 'esc_textarea', $safe_text, $text );
3214
+ }
3215
+
3216
+ /**
3217
+ * Escape an HTML tag name.
3218
+ *
3219
+ * @since 2.5.0
3220
+ *
3221
+ * @param string $tag_name
3222
+ * @return string
3223
+ */
3224
+ function tag_escape($tag_name) {
3225
+ $safe_tag = strtolower( preg_replace('/[^a-zA-Z0-9_:]/', '', $tag_name) );
3226
+ /**
3227
+ * Filter a string cleaned and escaped for output as an HTML tag.
3228
+ *
3229
+ * @since 2.8.0
3230
+ *
3231
+ * @param string $safe_tag The tag name after it has been escaped.
3232
+ * @param string $tag_name The text before it was escaped.
3233
+ */
3234
+ return apply_filters( 'tag_escape', $safe_tag, $tag_name );
3235
+ }
3236
+
3237
+ /**
3238
+ * Convert full URL paths to absolute paths.
3239
+ *
3240
+ * Removes the http or https protocols and the domain. Keeps the path '/' at the
3241
+ * beginning, so it isn't a true relative link, but from the web root base.
3242
+ *
3243
+ * @since 2.1.0
3244
+ *
3245
+ * @param string $link Full URL path.
3246
+ * @return string Absolute path.
3247
+ */
3248
+ function wp_make_link_relative( $link ) {
3249
+ return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
3250
+ }
3251
+
3252
+ /**
3253
+ * Sanitises various option values based on the nature of the option.
3254
+ *
3255
+ * This is basically a switch statement which will pass $value through a number
3256
+ * of functions depending on the $option.
3257
+ *
3258
+ * @since 2.0.5
3259
+ *
3260
+ * @param string $option The name of the option.
3261
+ * @param string $value The unsanitised value.
3262
+ * @return string Sanitized value.
3263
+ */
3264
+ function sanitize_option($option, $value) {
3265
+
3266
+ switch ( $option ) {
3267
+ case 'admin_email' :
3268
+ case 'new_admin_email' :
3269
+ $value = sanitize_email( $value );
3270
+ if ( ! is_email( $value ) ) {
3271
+ $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
3272
+ if ( function_exists( 'add_settings_error' ) )
3273
+ add_settings_error( $option, 'invalid_admin_email', __( 'The email address entered did not appear to be a valid email address. Please enter a valid email address.' ) );
3274
+ }
3275
+ break;
3276
+
3277
+ case 'thumbnail_size_w':
3278
+ case 'thumbnail_size_h':
3279
+ case 'medium_size_w':
3280
+ case 'medium_size_h':
3281
+ case 'large_size_w':
3282
+ case 'large_size_h':
3283
+ case 'mailserver_port':
3284
+ case 'comment_max_links':
3285
+ case 'page_on_front':
3286
+ case 'page_for_posts':
3287
+ case 'rss_excerpt_length':
3288
+ case 'default_category':
3289
+ case 'default_email_category':
3290
+ case 'default_link_category':
3291
+ case 'close_comments_days_old':
3292
+ case 'comments_per_page':
3293
+ case 'thread_comments_depth':
3294
+ case 'users_can_register':
3295
+ case 'start_of_week':
3296
+ $value = absint( $value );
3297
+ break;
3298
+
3299
+ case 'posts_per_page':
3300
+ case 'posts_per_rss':
3301
+ $value = (int) $value;
3302
+ if ( empty($value) )
3303
+ $value = 1;
3304
+ if ( $value < -1 )
3305
+ $value = abs($value);
3306
+ break;
3307
+
3308
+ case 'default_ping_status':
3309
+ case 'default_comment_status':
3310
+ // Options that if not there have 0 value but need to be something like "closed"
3311
+ if ( $value == '0' || $value == '')
3312
+ $value = 'closed';
3313
+ break;
3314
+
3315
+ case 'blogdescription':
3316
+ case 'blogname':
3317
+ $value = wp_kses_post( $value );
3318
+ $value = esc_html( $value );
3319
+ break;
3320
+
3321
+ case 'blog_charset':
3322
+ $value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value); // strips slashes
3323
+ break;
3324
+
3325
+ case 'blog_public':
3326
+ // This is the value if the settings checkbox is not checked on POST. Don't rely on this.
3327
+ if ( null === $value )
3328
+ $value = 1;
3329
+ else
3330
+ $value = intval( $value );
3331
+ break;
3332
+
3333
+ case 'date_format':
3334
+ case 'time_format':
3335
+ case 'mailserver_url':
3336
+ case 'mailserver_login':
3337
+ case 'mailserver_pass':
3338
+ case 'upload_path':
3339
+ $value = strip_tags( $value );
3340
+ $value = wp_kses_data( $value );
3341
+ break;
3342
+
3343
+ case 'ping_sites':
3344
+ $value = explode( "\n", $value );
3345
+ $value = array_filter( array_map( 'trim', $value ) );
3346
+ $value = array_filter( array_map( 'esc_url_raw', $value ) );
3347
+ $value = implode( "\n", $value );
3348
+ break;
3349
+
3350
+ case 'gmt_offset':
3351
+ $value = preg_replace('/[^0-9:.-]/', '', $value); // strips slashes
3352
+ break;
3353
+
3354
+ case 'siteurl':
3355
+ if ( (bool)preg_match( '#http(s?)://(.+)#i', $value) ) {
3356
+ $value = esc_url_raw($value);
3357
+ } else {
3358
+ $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
3359
+ if ( function_exists('add_settings_error') )
3360
+ add_settings_error('siteurl', 'invalid_siteurl', __('The WordPress address you entered did not appear to be a valid URL. Please enter a valid URL.'));
3361
+ }
3362
+ break;
3363
+
3364
+ case 'home':
3365
+ if ( (bool)preg_match( '#http(s?)://(.+)#i', $value) ) {
3366
+ $value = esc_url_raw($value);
3367
+ } else {
3368
+ $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
3369
+ if ( function_exists('add_settings_error') )
3370
+ add_settings_error('home', 'invalid_home', __('The Site address you entered did not appear to be a valid URL. Please enter a valid URL.'));
3371
+ }
3372
+ break;
3373
+
3374
+ case 'WPLANG':
3375
+ $allowed = get_available_languages();
3376
+ if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG ) {
3377
+ $allowed[] = WPLANG;
3378
+ }
3379
+ if ( ! in_array( $value, $allowed ) && ! empty( $value ) ) {
3380
+ $value = get_option( $option );
3381
+ }
3382
+ break;
3383
+
3384
+ case 'illegal_names':
3385
+ if ( ! is_array( $value ) )
3386
+ $value = explode( ' ', $value );
3387
+
3388
+ $value = array_values( array_filter( array_map( 'trim', $value ) ) );
3389
+
3390
+ if ( ! $value )
3391
+ $value = '';
3392
+ break;
3393
+
3394
+ case 'limited_email_domains':
3395
+ case 'banned_email_domains':
3396
+ if ( ! is_array( $value ) )
3397
+ $value = explode( "\n", $value );
3398
+
3399
+ $domains = array_values( array_filter( array_map( 'trim', $value ) ) );
3400
+ $value = array();
3401
+
3402
+ foreach ( $domains as $domain ) {
3403
+ if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
3404
+ $value[] = $domain;
3405
+ }
3406
+ if ( ! $value )
3407
+ $value = '';
3408
+ break;
3409
+
3410
+ case 'timezone_string':
3411
+ $allowed_zones = timezone_identifiers_list();
3412
+ if ( ! in_array( $value, $allowed_zones ) && ! empty( $value ) ) {
3413
+ $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
3414
+ if ( function_exists('add_settings_error') )
3415
+ add_settings_error('timezone_string', 'invalid_timezone_string', __('The timezone you have entered is not valid. Please select a valid timezone.') );
3416
+ }
3417
+ break;
3418
+
3419
+ case 'permalink_structure':
3420
+ case 'category_base':
3421
+ case 'tag_base':
3422
+ $value = esc_url_raw( $value );
3423
+ $value = str_replace( 'http://', '', $value );
3424
+ break;
3425
+
3426
+ case 'default_role' :
3427
+ if ( ! get_role( $value ) && get_role( 'subscriber' ) )
3428
+ $value = 'subscriber';
3429
+ break;
3430
+
3431
+ case 'moderation_keys':
3432
+ case 'blacklist_keys':
3433
+ $value = explode( "\n", $value );
3434
+ $value = array_filter( array_map( 'trim', $value ) );
3435
+ $value = array_unique( $value );
3436
+ $value = implode( "\n", $value );
3437
+ break;
3438
+ }
3439
+
3440
+ /**
3441
+ * Filter an option value following sanitization.
3442
+ *
3443
+ * @since 2.3.0
3444
+ *
3445
+ * @param string $value The sanitized option value.
3446
+ * @param string $option The option name.
3447
+ */
3448
+ $value = apply_filters( "sanitize_option_{$option}", $value, $option );
3449
+
3450
+ return $value;
3451
+ }
3452
+
3453
+ /**
3454
+ * Parses a string into variables to be stored in an array.
3455
+ *
3456
+ * Uses {@link http://www.php.net/parse_str parse_str()} and stripslashes if
3457
+ * {@link http://www.php.net/magic_quotes magic_quotes_gpc} is on.
3458
+ *
3459
+ * @since 2.2.1
3460
+ *
3461
+ * @param string $string The string to be parsed.
3462
+ * @param array $array Variables will be stored in this array.
3463
+ */
3464
+ function wp_parse_str( $string, &$array ) {
3465
+ parse_str( $string, $array );
3466
+ if ( get_magic_quotes_gpc() )
3467
+ $array = stripslashes_deep( $array );
3468
+ /**
3469
+ * Filter the array of variables derived from a parsed string.
3470
+ *
3471
+ * @since 2.3.0
3472
+ *
3473
+ * @param array $array The array populated with variables.
3474
+ */
3475
+ $array = apply_filters( 'wp_parse_str', $array );
3476
+ }
3477
+
3478
+ /**
3479
+ * Convert lone less than signs.
3480
+ *
3481
+ * KSES already converts lone greater than signs.
3482
+ *
3483
+ * @uses wp_pre_kses_less_than_callback in the callback function.
3484
+ * @since 2.3.0
3485
+ *
3486
+ * @param string $text Text to be converted.
3487
+ * @return string Converted text.
3488
+ */
3489
+ function wp_pre_kses_less_than( $text ) {
3490
+ return preg_replace_callback('%<[^>]*?((?=<)|>|$)%', 'wp_pre_kses_less_than_callback', $text);
3491
+ }
3492
+
3493
+ /**
3494
+ * Callback function used by preg_replace.
3495
+ *
3496
+ * @uses esc_html to format the $matches text.
3497
+ * @since 2.3.0
3498
+ *
3499
+ * @param array $matches Populated by matches to preg_replace.
3500
+ * @return string The text returned after esc_html if needed.
3501
+ */
3502
+ function wp_pre_kses_less_than_callback( $matches ) {
3503
+ if ( false === strpos($matches[0], '>') )
3504
+ return esc_html($matches[0]);
3505
+ return $matches[0];
3506
+ }
3507
+
3508
+ /**
3509
+ * WordPress implementation of PHP sprintf() with filters.
3510
+ *
3511
+ * @since 2.5.0
3512
+ * @link http://www.php.net/sprintf
3513
+ *
3514
+ * @param string $pattern The string which formatted args are inserted.
3515
+ * @param mixed $args,... Arguments to be formatted into the $pattern string.
3516
+ * @return string The formatted string.
3517
+ */
3518
+ function wp_sprintf( $pattern ) {
3519
+ $args = func_get_args();
3520
+ $len = strlen($pattern);
3521
+ $start = 0;
3522
+ $result = '';
3523
+ $arg_index = 0;
3524
+ while ( $len > $start ) {
3525
+ // Last character: append and break
3526
+ if ( strlen($pattern) - 1 == $start ) {
3527
+ $result .= substr($pattern, -1);
3528
+ break;
3529
+ }
3530
+
3531
+ // Literal %: append and continue
3532
+ if ( substr($pattern, $start, 2) == '%%' ) {
3533
+ $start += 2;
3534
+ $result .= '%';
3535
+ continue;
3536
+ }
3537
+
3538
+ // Get fragment before next %
3539
+ $end = strpos($pattern, '%', $start + 1);
3540
+ if ( false === $end )
3541
+ $end = $len;
3542
+ $fragment = substr($pattern, $start, $end - $start);
3543
+
3544
+ // Fragment has a specifier
3545
+ if ( $pattern[$start] == '%' ) {
3546
+ // Find numbered arguments or take the next one in order
3547
+ if ( preg_match('/^%(\d+)\$/', $fragment, $matches) ) {
3548
+ $arg = isset($args[$matches[1]]) ? $args[$matches[1]] : '';
3549
+ $fragment = str_replace("%{$matches[1]}$", '%', $fragment);
3550
+ } else {
3551
+ ++$arg_index;
3552
+ $arg = isset($args[$arg_index]) ? $args[$arg_index] : '';
3553
+ }
3554
+
3555
+ /**
3556
+ * Filter a fragment from the pattern passed to wp_sprintf().
3557
+ *
3558
+ * If the fragment is unchanged, then sprintf() will be run on the fragment.
3559
+ *
3560
+ * @since 2.5.0
3561
+ *
3562
+ * @param string $fragment A fragment from the pattern.
3563
+ * @param string $arg The argument.
3564
+ */
3565
+ $_fragment = apply_filters( 'wp_sprintf', $fragment, $arg );
3566
+ if ( $_fragment != $fragment )
3567
+ $fragment = $_fragment;
3568
+ else
3569
+ $fragment = sprintf($fragment, strval($arg) );
3570
+ }
3571
+
3572
+ // Append to result and move to next fragment
3573
+ $result .= $fragment;
3574
+ $start = $end;
3575
+ }
3576
+ return $result;
3577
+ }
3578
+
3579
+ /**
3580
+ * Localize list items before the rest of the content.
3581
+ *
3582
+ * The '%l' must be at the first characters can then contain the rest of the
3583
+ * content. The list items will have ', ', ', and', and ' and ' added depending
3584
+ * on the amount of list items in the $args parameter.
3585
+ *
3586
+ * @since 2.5.0
3587
+ *
3588
+ * @param string $pattern Content containing '%l' at the beginning.
3589
+ * @param array $args List items to prepend to the content and replace '%l'.
3590
+ * @return string Localized list items and rest of the content.
3591
+ */
3592
+ function wp_sprintf_l($pattern, $args) {
3593
+ // Not a match
3594
+ if ( substr($pattern, 0, 2) != '%l' )
3595
+ return $pattern;
3596
+
3597
+ // Nothing to work with
3598
+ if ( empty($args) )
3599
+ return '';
3600
+
3601
+ /**
3602
+ * Filter the translated delimiters used by wp_sprintf_l().
3603
+ * Placeholders (%s) are included to assist translators and then
3604
+ * removed before the array of strings reaches the filter.
3605
+ *
3606
+ * Please note: Ampersands and entities should be avoided here.
3607
+ *
3608
+ * @since 2.5.0
3609
+ *
3610
+ * @param array $delimiters An array of translated delimiters.
3611
+ */
3612
+ $l = apply_filters( 'wp_sprintf_l', array(
3613
+ /* translators: used to join items in a list with more than 2 items */
3614
+ 'between' => sprintf( __('%s, %s'), '', '' ),
3615
+ /* translators: used to join last two items in a list with more than 2 times */
3616
+ 'between_last_two' => sprintf( __('%s, and %s'), '', '' ),
3617
+ /* translators: used to join items in a list with only 2 items */
3618
+ 'between_only_two' => sprintf( __('%s and %s'), '', '' ),
3619
+ ) );
3620
+
3621
+ $args = (array) $args;
3622
+ $result = array_shift($args);
3623
+ if ( count($args) == 1 )
3624
+ $result .= $l['between_only_two'] . array_shift($args);
3625
+ // Loop when more than two args
3626
+ $i = count($args);
3627
+ while ( $i ) {
3628
+ $arg = array_shift($args);
3629
+ $i--;
3630
+ if ( 0 == $i )
3631
+ $result .= $l['between_last_two'] . $arg;
3632
+ else
3633
+ $result .= $l['between'] . $arg;
3634
+ }
3635
+ return $result . substr($pattern, 2);
3636
+ }
3637
+
3638
+ /**
3639
+ * Safely extracts not more than the first $count characters from html string.
3640
+ *
3641
+ * UTF-8, tags and entities safe prefix extraction. Entities inside will *NOT*
3642
+ * be counted as one character. For example &amp; will be counted as 4, &lt; as
3643
+ * 3, etc.
3644
+ *
3645
+ * @since 2.5.0
3646
+ *
3647
+ * @param string $str String to get the excerpt from.
3648
+ * @param integer $count Maximum number of characters to take.
3649
+ * @param string $more Optional. What to append if $str needs to be trimmed. Defaults to empty string.
3650
+ * @return string The excerpt.
3651
+ */
3652
+ function wp_html_excerpt( $str, $count, $more = null ) {
3653
+ if ( null === $more )
3654
+ $more = '';
3655
+ $str = wp_strip_all_tags( $str, true );
3656
+ $excerpt = mb_substr( $str, 0, $count );
3657
+ // remove part of an entity at the end
3658
+ $excerpt = preg_replace( '/&[^;\s]{0,6}$/', '', $excerpt );
3659
+ if ( $str != $excerpt )
3660
+ $excerpt = trim( $excerpt ) . $more;
3661
+ return $excerpt;
3662
+ }
3663
+
3664
+ /**
3665
+ * Add a Base url to relative links in passed content.
3666
+ *
3667
+ * By default it supports the 'src' and 'href' attributes. However this can be
3668
+ * changed via the 3rd param.
3669
+ *
3670
+ * @since 2.7.0
3671
+ *
3672
+ * @param string $content String to search for links in.
3673
+ * @param string $base The base URL to prefix to links.
3674
+ * @param array $attrs The attributes which should be processed.
3675
+ * @return string The processed content.
3676
+ */
3677
+ function links_add_base_url( $content, $base, $attrs = array('src', 'href') ) {
3678
+ global $_links_add_base;
3679
+ $_links_add_base = $base;
3680
+ $attrs = implode('|', (array)$attrs);
3681
+ return preg_replace_callback( "!($attrs)=(['\"])(.+?)\\2!i", '_links_add_base', $content );
3682
+ }
3683
+
3684
+ /**
3685
+ * Callback to add a base url to relative links in passed content.
3686
+ *
3687
+ * @since 2.7.0
3688
+ * @access private
3689
+ *
3690
+ * @param string $m The matched link.
3691
+ * @return string The processed link.
3692
+ */
3693
+ function _links_add_base($m) {
3694
+ global $_links_add_base;
3695
+ //1 = attribute name 2 = quotation mark 3 = URL
3696
+ return $m[1] . '=' . $m[2] .
3697
+ ( preg_match( '#^(\w{1,20}):#', $m[3], $protocol ) && in_array( $protocol[1], wp_allowed_protocols() ) ?
3698
+ $m[3] :
3699
+ path_join( $_links_add_base, $m[3] ) )
3700
+ . $m[2];
3701
+ }
3702
+
3703
+ /**
3704
+ * Adds a Target attribute to all links in passed content.
3705
+ *
3706
+ * This function by default only applies to <a> tags, however this can be
3707
+ * modified by the 3rd param.
3708
+ *
3709
+ * <b>NOTE:</b> Any current target attributed will be stripped and replaced.
3710
+ *
3711
+ * @since 2.7.0
3712
+ *
3713
+ * @param string $content String to search for links in.
3714
+ * @param string $target The Target to add to the links.
3715
+ * @param array $tags An array of tags to apply to.
3716
+ * @return string The processed content.
3717
+ */
3718
+ function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
3719
+ global $_links_add_target;
3720
+ $_links_add_target = $target;
3721
+ $tags = implode('|', (array)$tags);
3722
+ return preg_replace_callback( "!<($tags)([^>]*)>!i", '_links_add_target', $content );
3723
+ }
3724
+
3725
+ /**
3726
+ * Callback to add a target attribute to all links in passed content.
3727
+ *
3728
+ * @since 2.7.0
3729
+ * @access private
3730
+ *
3731
+ * @param string $m The matched link.
3732
+ * @return string The processed link.
3733
+ */
3734
+ function _links_add_target( $m ) {
3735
+ global $_links_add_target;
3736
+ $tag = $m[1];
3737
+ $link = preg_replace('|( target=([\'"])(.*?)\2)|i', '', $m[2]);
3738
+ return '<' . $tag . $link . ' target="' . esc_attr( $_links_add_target ) . '">';
3739
+ }
3740
+
3741
+ /**
3742
+ * Normalize EOL characters and strip duplicate whitespace.
3743
+ *
3744
+ * @since 2.7.0
3745
+ *
3746
+ * @param string $str The string to normalize.
3747
+ * @return string The normalized string.
3748
+ */
3749
+ function normalize_whitespace( $str ) {
3750
+ $str = trim( $str );
3751
+ $str = str_replace( "\r", "\n", $str );
3752
+ $str = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $str );
3753
+ return $str;
3754
+ }
3755
+
3756
+ /**
3757
+ * Properly strip all HTML tags including script and style
3758
+ *
3759
+ * This differs from strip_tags() because it removes the contents of
3760
+ * the <script> and <style> tags. E.g. strip_tags( '<script>something</script>' )
3761
+ * will return 'something'. wp_strip_all_tags will return ''
3762
+ *
3763
+ * @since 2.9.0
3764
+ *
3765
+ * @param string $string String containing HTML tags
3766
+ * @param bool $remove_breaks optional Whether to remove left over line breaks and white space chars
3767
+ * @return string The processed string.
3768
+ */
3769
+ function wp_strip_all_tags($string, $remove_breaks = false) {
3770
+ $string = preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $string );
3771
+ $string = strip_tags($string);
3772
+
3773
+ if ( $remove_breaks )
3774
+ $string = preg_replace('/[\r\n\t ]+/', ' ', $string);
3775
+
3776
+ return trim( $string );
3777
+ }
3778
+
3779
+ /**
3780
+ * Sanitize a string from user input or from the db
3781
+ *
3782
+ * check for invalid UTF-8,
3783
+ * Convert single < characters to entity,
3784
+ * strip all tags,
3785
+ * remove line breaks, tabs and extra white space,
3786
+ * strip octets.
3787
+ *
3788
+ * @since 2.9.0
3789
+ *
3790
+ * @param string $str
3791
+ * @return string
3792
+ */
3793
+ function sanitize_text_field($str) {
3794
+ $filtered = wp_check_invalid_utf8( $str );
3795
+
3796
+ if ( strpos($filtered, '<') !== false ) {
3797
+ $filtered = wp_pre_kses_less_than( $filtered );
3798
+ // This will strip extra whitespace for us.
3799
+ $filtered = wp_strip_all_tags( $filtered, true );
3800
+ } else {
3801
+ $filtered = trim( preg_replace('/[\r\n\t ]+/', ' ', $filtered) );
3802
+ }
3803
+
3804
+ $found = false;
3805
+ while ( preg_match('/%[a-f0-9]{2}/i', $filtered, $match) ) {
3806
+ $filtered = str_replace($match[0], '', $filtered);
3807
+ $found = true;
3808
+ }
3809
+
3810
+ if ( $found ) {
3811
+ // Strip out the whitespace that may now exist after removing the octets.
3812
+ $filtered = trim( preg_replace('/ +/', ' ', $filtered) );
3813
+ }
3814
+
3815
+ /**
3816
+ * Filter a sanitized text field string.
3817
+ *
3818
+ * @since 2.9.0
3819
+ *
3820
+ * @param string $filtered The sanitized string.
3821
+ * @param string $str The string prior to being sanitized.
3822
+ */
3823
+ return apply_filters( 'sanitize_text_field', $filtered, $str );
3824
+ }
3825
+
3826
+ /**
3827
+ * i18n friendly version of basename()
3828
+ *
3829
+ * @since 3.1.0
3830
+ *
3831
+ * @param string $path A path.
3832
+ * @param string $suffix If the filename ends in suffix this will also be cut off.
3833
+ * @return string
3834
+ */
3835
+ function wp_basename( $path, $suffix = '' ) {
3836
+ return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
3837
+ }
3838
+
3839
+ /**
3840
+ * Forever eliminate "Wordpress" from the planet (or at least the little bit we can influence).
3841
+ *
3842
+ * Violating our coding standards for a good function name.
3843
+ *
3844
+ * @since 3.0.0
3845
+ */
3846
+ function capital_P_dangit( $text ) {
3847
+ // Simple replacement for titles
3848
+ $current_filter = current_filter();
3849
+ if ( 'the_title' === $current_filter || 'wp_title' === $current_filter )
3850
+ return str_replace( 'Wordpress', 'WordPress', $text );
3851
+ // Still here? Use the more judicious replacement
3852
+ static $dblq = false;
3853
+ if ( false === $dblq )
3854
+ $dblq = _x( '&#8220;', 'opening curly double quote' );
3855
+ return str_replace(
3856
+ array( ' Wordpress', '&#8216;Wordpress', $dblq . 'Wordpress', '>Wordpress', '(Wordpress' ),
3857
+ array( ' WordPress', '&#8216;WordPress', $dblq . 'WordPress', '>WordPress', '(WordPress' ),
3858
+ $text );
3859
+
3860
+ }
3861
+
3862
+ /**
3863
+ * Sanitize a mime type
3864
+ *
3865
+ * @since 3.1.3
3866
+ *
3867
+ * @param string $mime_type Mime type
3868
+ * @return string Sanitized mime type
3869
+ */
3870
+ function sanitize_mime_type( $mime_type ) {
3871
+ $sani_mime_type = preg_replace( '/[^-+*.a-zA-Z0-9\/]/', '', $mime_type );
3872
+ /**
3873
+ * Filter a mime type following sanitization.
3874
+ *
3875
+ * @since 3.1.3
3876
+ *
3877
+ * @param string $sani_mime_type The sanitized mime type.
3878
+ * @param string $mime_type The mime type prior to sanitization.
3879
+ */
3880
+ return apply_filters( 'sanitize_mime_type', $sani_mime_type, $mime_type );
3881
+ }
3882
+
3883
+ /**
3884
+ * Sanitize space or carriage return separated URLs that are used to send trackbacks.
3885
+ *
3886
+ * @since 3.4.0
3887
+ *
3888
+ * @param string $to_ping Space or carriage return separated URLs
3889
+ * @return string URLs starting with the http or https protocol, separated by a carriage return.
3890
+ */
3891
+ function sanitize_trackback_urls( $to_ping ) {
3892
+ $urls_to_ping = preg_split( '/[\r\n\t ]/', trim( $to_ping ), -1, PREG_SPLIT_NO_EMPTY );
3893
+ foreach ( $urls_to_ping as $k => $url ) {
3894
+ if ( !preg_match( '#^https?://.#i', $url ) )
3895
+ unset( $urls_to_ping[$k] );
3896
+ }
3897
+ $urls_to_ping = array_map( 'esc_url_raw', $urls_to_ping );
3898
+ $urls_to_ping = implode( "\n", $urls_to_ping );
3899
+ /**
3900
+ * Filter a list of trackback URLs following sanitization.
3901
+ *
3902
+ * The string returned here consists of a space or carriage return-delimited list
3903
+ * of trackback URLs.
3904
+ *
3905
+ * @since 3.4.0
3906
+ *
3907
+ * @param string $urls_to_ping Sanitized space or carriage return separated URLs.
3908
+ * @param string $to_ping Space or carriage return separated URLs before sanitization.
3909
+ */
3910
+ return apply_filters( 'sanitize_trackback_urls', $urls_to_ping, $to_ping );
3911
+ }
3912
+
3913
+ /**
3914
+ * Add slashes to a string or array of strings.
3915
+ *
3916
+ * This should be used when preparing data for core API that expects slashed data.
3917
+ * This should not be used to escape data going directly into an SQL query.
3918
+ *
3919
+ * @since 3.6.0
3920
+ *
3921
+ * @param string|array $value String or array of strings to slash.
3922
+ * @return string|array Slashed $value
3923
+ */
3924
+ function wp_slash( $value ) {
3925
+ if ( is_array( $value ) ) {
3926
+ foreach ( $value as $k => $v ) {
3927
+ if ( is_array( $v ) ) {
3928
+ $value[$k] = wp_slash( $v );
3929
+ } else {
3930
+ $value[$k] = addslashes( $v );
3931
+ }
3932
+ }
3933
+ } else {
3934
+ $value = addslashes( $value );
3935
+ }
3936
+
3937
+ return $value;
3938
+ }
3939
+
3940
+ /**
3941
+ * Remove slashes from a string or array of strings.
3942
+ *
3943
+ * This should be used to remove slashes from data passed to core API that
3944
+ * expects data to be unslashed.
3945
+ *
3946
+ * @since 3.6.0
3947
+ *
3948
+ * @param string|array $value String or array of strings to unslash.
3949
+ * @return string|array Unslashed $value
3950
+ */
3951
+ function wp_unslash( $value ) {
3952
+ return stripslashes_deep( $value );
3953
+ }
3954
+
3955
+ /**
3956
+ * Extract and return the first URL from passed content.
3957
+ *
3958
+ * @since 3.6.0
3959
+ *
3960
+ * @param string $content A string which might contain a URL.
3961
+ * @return string The found URL.
3962
+ */
3963
+ function get_url_in_content( $content ) {
3964
+ if ( empty( $content ) ) {
3965
+ return false;
3966
+ }
3967
+
3968
+ if ( preg_match( '/<a\s[^>]*?href=([\'"])(.+?)\1/is', $content, $matches ) ) {
3969
+ return esc_url_raw( $matches[2] );
3970
+ }
3971
+
3972
+ return false;
3973
+ }
3974
+
3975
+ /**
3976
+ * Returns the regexp for common whitespace characters.
3977
+ *
3978
+ * By default, spaces include new lines, tabs, nbsp entities, and the UTF-8 nbsp.
3979
+ * This is designed to replace the PCRE \s sequence. In ticket #22692, that
3980
+ * sequence was found to be unreliable due to random inclusion of the A0 byte.
3981
+ *
3982
+ * @since 4.0.0
3983
+ *
3984
+ * @return string The spaces regexp.
3985
+ */
3986
+ function wp_spaces_regexp() {
3987
+ static $spaces;
3988
+
3989
+ if ( empty( $spaces ) ) {
3990
+ /**
3991
+ * Filter the regexp for common whitespace characters.
3992
+ *
3993
+ * This string is substituted for the \s sequence as needed in regular
3994
+ * expressions. For websites not written in English, different characters
3995
+ * may represent whitespace. For websites not encoded in UTF-8, the 0xC2 0xA0
3996
+ * sequence may not be in use.
3997
+ *
3998
+ * @since 4.0.0
3999
+ *
4000
+ * @param string $spaces Regexp pattern for matching common whitespace characters.
4001
+ */
4002
+ $spaces = apply_filters( 'wp_spaces_regexp', '[\r\n\t ]|\xC2\xA0|&nbsp;' );
4003
+ }
4004
+
4005
+ return $spaces;
4006
+ }