tui_editor-rails 1.0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (887) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +20 -0
  6. data/README.md +69 -0
  7. data/Rakefile +2 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/example/.gitignore +30 -0
  11. data/example/.ruby-version +1 -0
  12. data/example/Gemfile +64 -0
  13. data/example/Gemfile.lock +224 -0
  14. data/example/README.md +67 -0
  15. data/example/Rakefile +6 -0
  16. data/example/app/assets/config/manifest.js +3 -0
  17. data/example/app/assets/images/.keep +0 -0
  18. data/example/app/assets/images/screen_capture.png +0 -0
  19. data/example/app/assets/javascripts/application.js +23 -0
  20. data/example/app/assets/javascripts/cable.js +13 -0
  21. data/example/app/assets/javascripts/channels/.keep +0 -0
  22. data/example/app/assets/javascripts/home.coffee +3 -0
  23. data/example/app/assets/javascripts/posts.coffee +3 -0
  24. data/example/app/assets/stylesheets/application.scss +4 -0
  25. data/example/app/assets/stylesheets/home.scss +3 -0
  26. data/example/app/assets/stylesheets/posts.scss +3 -0
  27. data/example/app/assets/stylesheets/scaffolds.scss +84 -0
  28. data/example/app/channels/application_cable/channel.rb +4 -0
  29. data/example/app/channels/application_cable/connection.rb +4 -0
  30. data/example/app/controllers/application_controller.rb +2 -0
  31. data/example/app/controllers/concerns/.keep +0 -0
  32. data/example/app/controllers/home_controller.rb +4 -0
  33. data/example/app/controllers/posts_controller.rb +74 -0
  34. data/example/app/helpers/application_helper.rb +2 -0
  35. data/example/app/helpers/home_helper.rb +2 -0
  36. data/example/app/helpers/posts_helper.rb +2 -0
  37. data/example/app/jobs/application_job.rb +2 -0
  38. data/example/app/mailers/application_mailer.rb +4 -0
  39. data/example/app/models/application_record.rb +3 -0
  40. data/example/app/models/concerns/.keep +0 -0
  41. data/example/app/models/post.rb +2 -0
  42. data/example/app/views/home/index.html.erb +11 -0
  43. data/example/app/views/layouts/application.html.erb +14 -0
  44. data/example/app/views/layouts/mailer.html.erb +13 -0
  45. data/example/app/views/layouts/mailer.text.erb +1 -0
  46. data/example/app/views/posts/_form.html.erb +27 -0
  47. data/example/app/views/posts/_post.json.jbuilder +2 -0
  48. data/example/app/views/posts/edit.html.erb +6 -0
  49. data/example/app/views/posts/index.html.erb +29 -0
  50. data/example/app/views/posts/index.json.jbuilder +1 -0
  51. data/example/app/views/posts/new.html.erb +5 -0
  52. data/example/app/views/posts/show.html.erb +14 -0
  53. data/example/app/views/posts/show.json.jbuilder +1 -0
  54. data/example/bin/bundle +3 -0
  55. data/example/bin/rails +9 -0
  56. data/example/bin/rake +9 -0
  57. data/example/bin/setup +36 -0
  58. data/example/bin/spring +17 -0
  59. data/example/bin/update +31 -0
  60. data/example/bin/yarn +11 -0
  61. data/example/config.ru +5 -0
  62. data/example/config/application.rb +19 -0
  63. data/example/config/boot.rb +4 -0
  64. data/example/config/cable.yml +10 -0
  65. data/example/config/credentials.yml.enc +1 -0
  66. data/example/config/database.yml +25 -0
  67. data/example/config/environment.rb +5 -0
  68. data/example/config/environments/development.rb +61 -0
  69. data/example/config/environments/production.rb +94 -0
  70. data/example/config/environments/test.rb +46 -0
  71. data/example/config/initializers/application_controller_renderer.rb +8 -0
  72. data/example/config/initializers/assets.rb +14 -0
  73. data/example/config/initializers/backtrace_silencers.rb +7 -0
  74. data/example/config/initializers/content_security_policy.rb +22 -0
  75. data/example/config/initializers/cookies_serializer.rb +5 -0
  76. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/example/config/initializers/inflections.rb +16 -0
  78. data/example/config/initializers/mime_types.rb +4 -0
  79. data/example/config/initializers/wrap_parameters.rb +14 -0
  80. data/example/config/locales/en.yml +33 -0
  81. data/example/config/puma.rb +34 -0
  82. data/example/config/routes.rb +6 -0
  83. data/example/config/spring.rb +6 -0
  84. data/example/config/storage.yml +35 -0
  85. data/example/db/migrate/20180208210404_create_posts.rb +10 -0
  86. data/example/db/schema.rb +22 -0
  87. data/example/db/seeds.rb +7 -0
  88. data/example/lib/assets/.keep +0 -0
  89. data/example/lib/tasks/.keep +0 -0
  90. data/example/log/.keep +0 -0
  91. data/example/package.json +5 -0
  92. data/example/public/404.html +67 -0
  93. data/example/public/422.html +67 -0
  94. data/example/public/500.html +66 -0
  95. data/example/public/apple-touch-icon-precomposed.png +0 -0
  96. data/example/public/apple-touch-icon.png +0 -0
  97. data/example/public/favicon.ico +0 -0
  98. data/example/public/robots.txt +1 -0
  99. data/example/test/application_system_test_case.rb +5 -0
  100. data/example/test/controllers/.keep +0 -0
  101. data/example/test/controllers/home_controller_test.rb +9 -0
  102. data/example/test/controllers/posts_controller_test.rb +48 -0
  103. data/example/test/fixtures/.keep +0 -0
  104. data/example/test/fixtures/files/.keep +0 -0
  105. data/example/test/fixtures/posts.yml +9 -0
  106. data/example/test/helpers/.keep +0 -0
  107. data/example/test/integration/.keep +0 -0
  108. data/example/test/mailers/.keep +0 -0
  109. data/example/test/models/.keep +0 -0
  110. data/example/test/models/post_test.rb +7 -0
  111. data/example/test/system/.keep +0 -0
  112. data/example/test/system/posts_test.rb +45 -0
  113. data/example/test/test_helper.rb +10 -0
  114. data/example/tmp/.keep +0 -0
  115. data/example/vendor/.keep +0 -0
  116. data/lib/tui_editor/rails.rb +8 -0
  117. data/lib/tui_editor/rails/version.rb +5 -0
  118. data/tui_editor-rails.gemspec +34 -0
  119. data/vendor/assets/components/codemirror/.bower.json +31 -0
  120. data/vendor/assets/components/codemirror/AUTHORS +714 -0
  121. data/vendor/assets/components/codemirror/CHANGELOG.md +1316 -0
  122. data/vendor/assets/components/codemirror/CONTRIBUTING.md +92 -0
  123. data/vendor/assets/components/codemirror/LICENSE +21 -0
  124. data/vendor/assets/components/codemirror/README.md +35 -0
  125. data/vendor/assets/components/codemirror/addon/comment/comment.js +209 -0
  126. data/vendor/assets/components/codemirror/addon/comment/continuecomment.js +78 -0
  127. data/vendor/assets/components/codemirror/addon/dialog/dialog.css +32 -0
  128. data/vendor/assets/components/codemirror/addon/dialog/dialog.js +157 -0
  129. data/vendor/assets/components/codemirror/addon/display/autorefresh.js +47 -0
  130. data/vendor/assets/components/codemirror/addon/display/fullscreen.css +6 -0
  131. data/vendor/assets/components/codemirror/addon/display/fullscreen.js +41 -0
  132. data/vendor/assets/components/codemirror/addon/display/panel.js +123 -0
  133. data/vendor/assets/components/codemirror/addon/display/placeholder.js +63 -0
  134. data/vendor/assets/components/codemirror/addon/display/rulers.js +51 -0
  135. data/vendor/assets/components/codemirror/addon/edit/closebrackets.js +194 -0
  136. data/vendor/assets/components/codemirror/addon/edit/closetag.js +175 -0
  137. data/vendor/assets/components/codemirror/addon/edit/continuelist.js +89 -0
  138. data/vendor/assets/components/codemirror/addon/edit/matchbrackets.js +145 -0
  139. data/vendor/assets/components/codemirror/addon/edit/matchtags.js +66 -0
  140. data/vendor/assets/components/codemirror/addon/edit/trailingspace.js +27 -0
  141. data/vendor/assets/components/codemirror/addon/fold/brace-fold.js +105 -0
  142. data/vendor/assets/components/codemirror/addon/fold/comment-fold.js +59 -0
  143. data/vendor/assets/components/codemirror/addon/fold/foldcode.js +152 -0
  144. data/vendor/assets/components/codemirror/addon/fold/foldgutter.css +20 -0
  145. data/vendor/assets/components/codemirror/addon/fold/foldgutter.js +146 -0
  146. data/vendor/assets/components/codemirror/addon/fold/indent-fold.js +48 -0
  147. data/vendor/assets/components/codemirror/addon/fold/markdown-fold.js +49 -0
  148. data/vendor/assets/components/codemirror/addon/fold/xml-fold.js +182 -0
  149. data/vendor/assets/components/codemirror/addon/hint/anyword-hint.js +41 -0
  150. data/vendor/assets/components/codemirror/addon/hint/css-hint.js +60 -0
  151. data/vendor/assets/components/codemirror/addon/hint/html-hint.js +348 -0
  152. data/vendor/assets/components/codemirror/addon/hint/javascript-hint.js +155 -0
  153. data/vendor/assets/components/codemirror/addon/hint/show-hint.css +36 -0
  154. data/vendor/assets/components/codemirror/addon/hint/show-hint.js +432 -0
  155. data/vendor/assets/components/codemirror/addon/hint/sql-hint.js +286 -0
  156. data/vendor/assets/components/codemirror/addon/hint/xml-hint.js +110 -0
  157. data/vendor/assets/components/codemirror/addon/lint/coffeescript-lint.js +47 -0
  158. data/vendor/assets/components/codemirror/addon/lint/css-lint.js +40 -0
  159. data/vendor/assets/components/codemirror/addon/lint/html-lint.js +53 -0
  160. data/vendor/assets/components/codemirror/addon/lint/javascript-lint.js +63 -0
  161. data/vendor/assets/components/codemirror/addon/lint/json-lint.js +37 -0
  162. data/vendor/assets/components/codemirror/addon/lint/lint.css +73 -0
  163. data/vendor/assets/components/codemirror/addon/lint/lint.js +252 -0
  164. data/vendor/assets/components/codemirror/addon/lint/yaml-lint.js +41 -0
  165. data/vendor/assets/components/codemirror/addon/merge/merge.css +113 -0
  166. data/vendor/assets/components/codemirror/addon/merge/merge.js +1001 -0
  167. data/vendor/assets/components/codemirror/addon/mode/loadmode.js +64 -0
  168. data/vendor/assets/components/codemirror/addon/mode/multiplex.js +123 -0
  169. data/vendor/assets/components/codemirror/addon/mode/multiplex_test.js +33 -0
  170. data/vendor/assets/components/codemirror/addon/mode/overlay.js +90 -0
  171. data/vendor/assets/components/codemirror/addon/mode/simple.js +216 -0
  172. data/vendor/assets/components/codemirror/addon/runmode/colorize.js +40 -0
  173. data/vendor/assets/components/codemirror/addon/runmode/runmode-standalone.js +158 -0
  174. data/vendor/assets/components/codemirror/addon/runmode/runmode.js +72 -0
  175. data/vendor/assets/components/codemirror/addon/runmode/runmode.node.js +197 -0
  176. data/vendor/assets/components/codemirror/addon/scroll/annotatescrollbar.js +122 -0
  177. data/vendor/assets/components/codemirror/addon/scroll/scrollpastend.js +48 -0
  178. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.css +66 -0
  179. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.js +152 -0
  180. data/vendor/assets/components/codemirror/addon/search/jump-to-line.js +49 -0
  181. data/vendor/assets/components/codemirror/addon/search/match-highlighter.js +165 -0
  182. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.css +8 -0
  183. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.js +97 -0
  184. data/vendor/assets/components/codemirror/addon/search/search.js +252 -0
  185. data/vendor/assets/components/codemirror/addon/search/searchcursor.js +289 -0
  186. data/vendor/assets/components/codemirror/addon/selection/active-line.js +72 -0
  187. data/vendor/assets/components/codemirror/addon/selection/mark-selection.js +119 -0
  188. data/vendor/assets/components/codemirror/addon/selection/selection-pointer.js +98 -0
  189. data/vendor/assets/components/codemirror/addon/tern/tern.css +87 -0
  190. data/vendor/assets/components/codemirror/addon/tern/tern.js +718 -0
  191. data/vendor/assets/components/codemirror/addon/tern/worker.js +44 -0
  192. data/vendor/assets/components/codemirror/addon/wrap/hardwrap.js +144 -0
  193. data/vendor/assets/components/codemirror/bower.json +17 -0
  194. data/vendor/assets/components/codemirror/component-tools/bower.json +17 -0
  195. data/vendor/assets/components/codemirror/component-tools/build.sh +31 -0
  196. data/vendor/assets/components/codemirror/component-tools/update.py +38 -0
  197. data/vendor/assets/components/codemirror/keymap/emacs.js +416 -0
  198. data/vendor/assets/components/codemirror/keymap/sublime.js +685 -0
  199. data/vendor/assets/components/codemirror/keymap/vim.js +5219 -0
  200. data/vendor/assets/components/codemirror/lib/codemirror.css +346 -0
  201. data/vendor/assets/components/codemirror/lib/codemirror.js +9669 -0
  202. data/vendor/assets/components/codemirror/mode/apl/apl.js +174 -0
  203. data/vendor/assets/components/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  204. data/vendor/assets/components/codemirror/mode/asn.1/asn.1.js +204 -0
  205. data/vendor/assets/components/codemirror/mode/asterisk/asterisk.js +196 -0
  206. data/vendor/assets/components/codemirror/mode/brainfuck/brainfuck.js +85 -0
  207. data/vendor/assets/components/codemirror/mode/clike/clike.js +817 -0
  208. data/vendor/assets/components/codemirror/mode/clojure/clojure.js +306 -0
  209. data/vendor/assets/components/codemirror/mode/cmake/cmake.js +97 -0
  210. data/vendor/assets/components/codemirror/mode/cobol/cobol.js +255 -0
  211. data/vendor/assets/components/codemirror/mode/coffeescript/coffeescript.js +359 -0
  212. data/vendor/assets/components/codemirror/mode/commonlisp/commonlisp.js +124 -0
  213. data/vendor/assets/components/codemirror/mode/crystal/crystal.js +433 -0
  214. data/vendor/assets/components/codemirror/mode/css/css.js +832 -0
  215. data/vendor/assets/components/codemirror/mode/cypher/cypher.js +150 -0
  216. data/vendor/assets/components/codemirror/mode/d/d.js +218 -0
  217. data/vendor/assets/components/codemirror/mode/dart/dart.js +157 -0
  218. data/vendor/assets/components/codemirror/mode/diff/diff.js +47 -0
  219. data/vendor/assets/components/codemirror/mode/django/django.js +356 -0
  220. data/vendor/assets/components/codemirror/mode/dockerfile/dockerfile.js +79 -0
  221. data/vendor/assets/components/codemirror/mode/dtd/dtd.js +142 -0
  222. data/vendor/assets/components/codemirror/mode/dylan/dylan.js +352 -0
  223. data/vendor/assets/components/codemirror/mode/ebnf/ebnf.js +195 -0
  224. data/vendor/assets/components/codemirror/mode/ecl/ecl.js +206 -0
  225. data/vendor/assets/components/codemirror/mode/eiffel/eiffel.js +160 -0
  226. data/vendor/assets/components/codemirror/mode/elm/elm.js +205 -0
  227. data/vendor/assets/components/codemirror/mode/erlang/erlang.js +619 -0
  228. data/vendor/assets/components/codemirror/mode/factor/factor.js +85 -0
  229. data/vendor/assets/components/codemirror/mode/fcl/fcl.js +173 -0
  230. data/vendor/assets/components/codemirror/mode/forth/forth.js +180 -0
  231. data/vendor/assets/components/codemirror/mode/fortran/fortran.js +188 -0
  232. data/vendor/assets/components/codemirror/mode/gas/gas.js +345 -0
  233. data/vendor/assets/components/codemirror/mode/gfm/gfm.js +129 -0
  234. data/vendor/assets/components/codemirror/mode/gherkin/gherkin.js +178 -0
  235. data/vendor/assets/components/codemirror/mode/go/go.js +187 -0
  236. data/vendor/assets/components/codemirror/mode/groovy/groovy.js +230 -0
  237. data/vendor/assets/components/codemirror/mode/haml/haml.js +161 -0
  238. data/vendor/assets/components/codemirror/mode/handlebars/handlebars.js +62 -0
  239. data/vendor/assets/components/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  240. data/vendor/assets/components/codemirror/mode/haskell/haskell.js +267 -0
  241. data/vendor/assets/components/codemirror/mode/haxe/haxe.js +515 -0
  242. data/vendor/assets/components/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  243. data/vendor/assets/components/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
  244. data/vendor/assets/components/codemirror/mode/http/http.js +113 -0
  245. data/vendor/assets/components/codemirror/mode/idl/idl.js +290 -0
  246. data/vendor/assets/components/codemirror/mode/javascript/javascript.js +865 -0
  247. data/vendor/assets/components/codemirror/mode/jinja2/jinja2.js +142 -0
  248. data/vendor/assets/components/codemirror/mode/jsx/jsx.js +148 -0
  249. data/vendor/assets/components/codemirror/mode/julia/julia.js +418 -0
  250. data/vendor/assets/components/codemirror/mode/livescript/livescript.js +280 -0
  251. data/vendor/assets/components/codemirror/mode/lua/lua.js +159 -0
  252. data/vendor/assets/components/codemirror/mode/markdown/markdown.js +872 -0
  253. data/vendor/assets/components/codemirror/mode/mathematica/mathematica.js +176 -0
  254. data/vendor/assets/components/codemirror/mode/mbox/mbox.js +129 -0
  255. data/vendor/assets/components/codemirror/mode/meta.js +217 -0
  256. data/vendor/assets/components/codemirror/mode/mirc/mirc.js +193 -0
  257. data/vendor/assets/components/codemirror/mode/mllike/mllike.js +356 -0
  258. data/vendor/assets/components/codemirror/mode/modelica/modelica.js +245 -0
  259. data/vendor/assets/components/codemirror/mode/mscgen/mscgen.js +175 -0
  260. data/vendor/assets/components/codemirror/mode/mumps/mumps.js +148 -0
  261. data/vendor/assets/components/codemirror/mode/nginx/nginx.js +178 -0
  262. data/vendor/assets/components/codemirror/mode/nsis/nsis.js +95 -0
  263. data/vendor/assets/components/codemirror/mode/ntriples/ntriples.js +195 -0
  264. data/vendor/assets/components/codemirror/mode/octave/octave.js +139 -0
  265. data/vendor/assets/components/codemirror/mode/oz/oz.js +252 -0
  266. data/vendor/assets/components/codemirror/mode/pascal/pascal.js +109 -0
  267. data/vendor/assets/components/codemirror/mode/pegjs/pegjs.js +114 -0
  268. data/vendor/assets/components/codemirror/mode/perl/perl.js +837 -0
  269. data/vendor/assets/components/codemirror/mode/php/php.js +234 -0
  270. data/vendor/assets/components/codemirror/mode/pig/pig.js +178 -0
  271. data/vendor/assets/components/codemirror/mode/powershell/powershell.js +398 -0
  272. data/vendor/assets/components/codemirror/mode/properties/properties.js +78 -0
  273. data/vendor/assets/components/codemirror/mode/protobuf/protobuf.js +69 -0
  274. data/vendor/assets/components/codemirror/mode/pug/pug.js +591 -0
  275. data/vendor/assets/components/codemirror/mode/puppet/puppet.js +220 -0
  276. data/vendor/assets/components/codemirror/mode/python/python.js +334 -0
  277. data/vendor/assets/components/codemirror/mode/q/q.js +139 -0
  278. data/vendor/assets/components/codemirror/mode/r/r.js +183 -0
  279. data/vendor/assets/components/codemirror/mode/rpm/rpm.js +109 -0
  280. data/vendor/assets/components/codemirror/mode/rst/rst.js +557 -0
  281. data/vendor/assets/components/codemirror/mode/ruby/ruby.js +296 -0
  282. data/vendor/assets/components/codemirror/mode/rust/rust.js +72 -0
  283. data/vendor/assets/components/codemirror/mode/sas/sas.js +303 -0
  284. data/vendor/assets/components/codemirror/mode/sass/sass.js +454 -0
  285. data/vendor/assets/components/codemirror/mode/scheme/scheme.js +249 -0
  286. data/vendor/assets/components/codemirror/mode/shell/shell.js +151 -0
  287. data/vendor/assets/components/codemirror/mode/sieve/sieve.js +193 -0
  288. data/vendor/assets/components/codemirror/mode/slim/slim.js +575 -0
  289. data/vendor/assets/components/codemirror/mode/smalltalk/smalltalk.js +168 -0
  290. data/vendor/assets/components/codemirror/mode/smarty/smarty.js +225 -0
  291. data/vendor/assets/components/codemirror/mode/solr/solr.js +104 -0
  292. data/vendor/assets/components/codemirror/mode/soy/soy.js +354 -0
  293. data/vendor/assets/components/codemirror/mode/sparql/sparql.js +180 -0
  294. data/vendor/assets/components/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  295. data/vendor/assets/components/codemirror/mode/sql/sql.js +488 -0
  296. data/vendor/assets/components/codemirror/mode/stex/stex.js +251 -0
  297. data/vendor/assets/components/codemirror/mode/stylus/stylus.js +771 -0
  298. data/vendor/assets/components/codemirror/mode/swift/swift.js +219 -0
  299. data/vendor/assets/components/codemirror/mode/tcl/tcl.js +139 -0
  300. data/vendor/assets/components/codemirror/mode/textile/textile.js +469 -0
  301. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  302. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  303. data/vendor/assets/components/codemirror/mode/tiki/tiki.css +26 -0
  304. data/vendor/assets/components/codemirror/mode/tiki/tiki.js +312 -0
  305. data/vendor/assets/components/codemirror/mode/toml/toml.js +88 -0
  306. data/vendor/assets/components/codemirror/mode/tornado/tornado.js +68 -0
  307. data/vendor/assets/components/codemirror/mode/troff/troff.js +84 -0
  308. data/vendor/assets/components/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  309. data/vendor/assets/components/codemirror/mode/ttcn/ttcn.js +283 -0
  310. data/vendor/assets/components/codemirror/mode/turtle/turtle.js +162 -0
  311. data/vendor/assets/components/codemirror/mode/twig/twig.js +141 -0
  312. data/vendor/assets/components/codemirror/mode/vb/vb.js +275 -0
  313. data/vendor/assets/components/codemirror/mode/vbscript/vbscript.js +350 -0
  314. data/vendor/assets/components/codemirror/mode/velocity/velocity.js +201 -0
  315. data/vendor/assets/components/codemirror/mode/verilog/verilog.js +675 -0
  316. data/vendor/assets/components/codemirror/mode/vhdl/vhdl.js +189 -0
  317. data/vendor/assets/components/codemirror/mode/vue/vue.js +77 -0
  318. data/vendor/assets/components/codemirror/mode/webidl/webidl.js +195 -0
  319. data/vendor/assets/components/codemirror/mode/xml/xml.js +401 -0
  320. data/vendor/assets/components/codemirror/mode/xquery/xquery.js +448 -0
  321. data/vendor/assets/components/codemirror/mode/yacas/yacas.js +204 -0
  322. data/vendor/assets/components/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
  323. data/vendor/assets/components/codemirror/mode/yaml/yaml.js +118 -0
  324. data/vendor/assets/components/codemirror/mode/z80/z80.js +116 -0
  325. data/vendor/assets/components/codemirror/rollup.config.js +18 -0
  326. data/vendor/assets/components/codemirror/src/codemirror.js +3 -0
  327. data/vendor/assets/components/codemirror/src/display/Display.js +106 -0
  328. data/vendor/assets/components/codemirror/src/display/focus.js +47 -0
  329. data/vendor/assets/components/codemirror/src/display/gutters.js +34 -0
  330. data/vendor/assets/components/codemirror/src/display/highlight_worker.js +55 -0
  331. data/vendor/assets/components/codemirror/src/display/line_numbers.js +48 -0
  332. data/vendor/assets/components/codemirror/src/display/mode_state.js +22 -0
  333. data/vendor/assets/components/codemirror/src/display/operations.js +205 -0
  334. data/vendor/assets/components/codemirror/src/display/scroll_events.js +115 -0
  335. data/vendor/assets/components/codemirror/src/display/scrollbars.js +192 -0
  336. data/vendor/assets/components/codemirror/src/display/scrolling.js +184 -0
  337. data/vendor/assets/components/codemirror/src/display/selection.js +158 -0
  338. data/vendor/assets/components/codemirror/src/display/update_display.js +260 -0
  339. data/vendor/assets/components/codemirror/src/display/update_line.js +188 -0
  340. data/vendor/assets/components/codemirror/src/display/update_lines.js +64 -0
  341. data/vendor/assets/components/codemirror/src/display/view_tracking.js +153 -0
  342. data/vendor/assets/components/codemirror/src/edit/CodeMirror.js +214 -0
  343. data/vendor/assets/components/codemirror/src/edit/commands.js +178 -0
  344. data/vendor/assets/components/codemirror/src/edit/deleteNearSelection.js +30 -0
  345. data/vendor/assets/components/codemirror/src/edit/drop_events.js +119 -0
  346. data/vendor/assets/components/codemirror/src/edit/fromTextArea.js +61 -0
  347. data/vendor/assets/components/codemirror/src/edit/global_events.js +44 -0
  348. data/vendor/assets/components/codemirror/src/edit/key_events.js +159 -0
  349. data/vendor/assets/components/codemirror/src/edit/legacy.js +62 -0
  350. data/vendor/assets/components/codemirror/src/edit/main.js +69 -0
  351. data/vendor/assets/components/codemirror/src/edit/methods.js +539 -0
  352. data/vendor/assets/components/codemirror/src/edit/mouse_events.js +407 -0
  353. data/vendor/assets/components/codemirror/src/edit/options.js +191 -0
  354. data/vendor/assets/components/codemirror/src/edit/utils.js +7 -0
  355. data/vendor/assets/components/codemirror/src/input/ContentEditableInput.js +517 -0
  356. data/vendor/assets/components/codemirror/src/input/TextareaInput.js +350 -0
  357. data/vendor/assets/components/codemirror/src/input/indent.js +71 -0
  358. data/vendor/assets/components/codemirror/src/input/input.js +135 -0
  359. data/vendor/assets/components/codemirror/src/input/keymap.js +148 -0
  360. data/vendor/assets/components/codemirror/src/input/keynames.js +17 -0
  361. data/vendor/assets/components/codemirror/src/input/movement.js +110 -0
  362. data/vendor/assets/components/codemirror/src/line/highlight.js +284 -0
  363. data/vendor/assets/components/codemirror/src/line/line_data.js +337 -0
  364. data/vendor/assets/components/codemirror/src/line/pos.js +40 -0
  365. data/vendor/assets/components/codemirror/src/line/saw_special_spans.js +10 -0
  366. data/vendor/assets/components/codemirror/src/line/spans.js +372 -0
  367. data/vendor/assets/components/codemirror/src/line/utils_line.js +85 -0
  368. data/vendor/assets/components/codemirror/src/measurement/position_measurement.js +700 -0
  369. data/vendor/assets/components/codemirror/src/measurement/widgets.js +26 -0
  370. data/vendor/assets/components/codemirror/src/model/Doc.js +432 -0
  371. data/vendor/assets/components/codemirror/src/model/change_measurement.js +61 -0
  372. data/vendor/assets/components/codemirror/src/model/changes.js +330 -0
  373. data/vendor/assets/components/codemirror/src/model/chunk.js +167 -0
  374. data/vendor/assets/components/codemirror/src/model/document_data.js +111 -0
  375. data/vendor/assets/components/codemirror/src/model/history.js +228 -0
  376. data/vendor/assets/components/codemirror/src/model/line_widget.js +78 -0
  377. data/vendor/assets/components/codemirror/src/model/mark_text.js +292 -0
  378. data/vendor/assets/components/codemirror/src/model/selection.js +82 -0
  379. data/vendor/assets/components/codemirror/src/model/selection_updates.js +208 -0
  380. data/vendor/assets/components/codemirror/src/modes.js +96 -0
  381. data/vendor/assets/components/codemirror/src/util/StringStream.js +90 -0
  382. data/vendor/assets/components/codemirror/src/util/bidi.js +214 -0
  383. data/vendor/assets/components/codemirror/src/util/browser.js +33 -0
  384. data/vendor/assets/components/codemirror/src/util/dom.js +97 -0
  385. data/vendor/assets/components/codemirror/src/util/event.js +103 -0
  386. data/vendor/assets/components/codemirror/src/util/feature_detection.js +84 -0
  387. data/vendor/assets/components/codemirror/src/util/misc.js +150 -0
  388. data/vendor/assets/components/codemirror/src/util/operation_group.js +72 -0
  389. data/vendor/assets/components/codemirror/theme/3024-day.css +41 -0
  390. data/vendor/assets/components/codemirror/theme/3024-night.css +39 -0
  391. data/vendor/assets/components/codemirror/theme/abcdef.css +32 -0
  392. data/vendor/assets/components/codemirror/theme/ambiance-mobile.css +5 -0
  393. data/vendor/assets/components/codemirror/theme/ambiance.css +74 -0
  394. data/vendor/assets/components/codemirror/theme/base16-dark.css +38 -0
  395. data/vendor/assets/components/codemirror/theme/base16-light.css +38 -0
  396. data/vendor/assets/components/codemirror/theme/bespin.css +34 -0
  397. data/vendor/assets/components/codemirror/theme/blackboard.css +32 -0
  398. data/vendor/assets/components/codemirror/theme/cobalt.css +25 -0
  399. data/vendor/assets/components/codemirror/theme/colorforth.css +33 -0
  400. data/vendor/assets/components/codemirror/theme/dracula.css +40 -0
  401. data/vendor/assets/components/codemirror/theme/duotone-dark.css +35 -0
  402. data/vendor/assets/components/codemirror/theme/duotone-light.css +36 -0
  403. data/vendor/assets/components/codemirror/theme/eclipse.css +23 -0
  404. data/vendor/assets/components/codemirror/theme/elegant.css +13 -0
  405. data/vendor/assets/components/codemirror/theme/erlang-dark.css +34 -0
  406. data/vendor/assets/components/codemirror/theme/hopscotch.css +34 -0
  407. data/vendor/assets/components/codemirror/theme/icecoder.css +43 -0
  408. data/vendor/assets/components/codemirror/theme/isotope.css +34 -0
  409. data/vendor/assets/components/codemirror/theme/lesser-dark.css +47 -0
  410. data/vendor/assets/components/codemirror/theme/liquibyte.css +95 -0
  411. data/vendor/assets/components/codemirror/theme/material.css +53 -0
  412. data/vendor/assets/components/codemirror/theme/mbo.css +37 -0
  413. data/vendor/assets/components/codemirror/theme/mdn-like.css +46 -0
  414. data/vendor/assets/components/codemirror/theme/midnight.css +43 -0
  415. data/vendor/assets/components/codemirror/theme/monokai.css +36 -0
  416. data/vendor/assets/components/codemirror/theme/neat.css +12 -0
  417. data/vendor/assets/components/codemirror/theme/neo.css +43 -0
  418. data/vendor/assets/components/codemirror/theme/night.css +27 -0
  419. data/vendor/assets/components/codemirror/theme/oceanic-next.css +44 -0
  420. data/vendor/assets/components/codemirror/theme/panda-syntax.css +85 -0
  421. data/vendor/assets/components/codemirror/theme/paraiso-dark.css +38 -0
  422. data/vendor/assets/components/codemirror/theme/paraiso-light.css +38 -0
  423. data/vendor/assets/components/codemirror/theme/pastel-on-dark.css +52 -0
  424. data/vendor/assets/components/codemirror/theme/railscasts.css +34 -0
  425. data/vendor/assets/components/codemirror/theme/rubyblue.css +25 -0
  426. data/vendor/assets/components/codemirror/theme/seti.css +44 -0
  427. data/vendor/assets/components/codemirror/theme/shadowfox.css +52 -0
  428. data/vendor/assets/components/codemirror/theme/solarized.css +168 -0
  429. data/vendor/assets/components/codemirror/theme/the-matrix.css +30 -0
  430. data/vendor/assets/components/codemirror/theme/tomorrow-night-bright.css +35 -0
  431. data/vendor/assets/components/codemirror/theme/tomorrow-night-eighties.css +38 -0
  432. data/vendor/assets/components/codemirror/theme/ttcn.css +64 -0
  433. data/vendor/assets/components/codemirror/theme/twilight.css +32 -0
  434. data/vendor/assets/components/codemirror/theme/vibrant-ink.css +34 -0
  435. data/vendor/assets/components/codemirror/theme/xq-dark.css +53 -0
  436. data/vendor/assets/components/codemirror/theme/xq-light.css +43 -0
  437. data/vendor/assets/components/codemirror/theme/yeti.css +44 -0
  438. data/vendor/assets/components/codemirror/theme/zenburn.css +37 -0
  439. data/vendor/assets/components/eve/.bower.json +12 -0
  440. data/vendor/assets/components/eve/LICENSE +202 -0
  441. data/vendor/assets/components/eve/README.md +7 -0
  442. data/vendor/assets/components/eve/component.json +13 -0
  443. data/vendor/assets/components/eve/e.html +66 -0
  444. data/vendor/assets/components/eve/eve.js +371 -0
  445. data/vendor/assets/components/eve/package.json +18 -0
  446. data/vendor/assets/components/highlightjs/.bower.json +24 -0
  447. data/vendor/assets/components/highlightjs/LICENSE +24 -0
  448. data/vendor/assets/components/highlightjs/Makefile +21 -0
  449. data/vendor/assets/components/highlightjs/README.md +12 -0
  450. data/vendor/assets/components/highlightjs/bower.json +14 -0
  451. data/vendor/assets/components/highlightjs/component.json +12 -0
  452. data/vendor/assets/components/highlightjs/composer.json +26 -0
  453. data/vendor/assets/components/highlightjs/highlight.pack.js +16645 -0
  454. data/vendor/assets/components/highlightjs/highlight.pack.min.js +15 -0
  455. data/vendor/assets/components/highlightjs/package.json +8 -0
  456. data/vendor/assets/components/highlightjs/styles/agate.css +108 -0
  457. data/vendor/assets/components/highlightjs/styles/androidstudio.css +66 -0
  458. data/vendor/assets/components/highlightjs/styles/arduino-light.css +88 -0
  459. data/vendor/assets/components/highlightjs/styles/arta.css +73 -0
  460. data/vendor/assets/components/highlightjs/styles/ascetic.css +45 -0
  461. data/vendor/assets/components/highlightjs/styles/atelier-cave-dark.css +83 -0
  462. data/vendor/assets/components/highlightjs/styles/atelier-cave-light.css +85 -0
  463. data/vendor/assets/components/highlightjs/styles/atelier-cave.dark.css +113 -0
  464. data/vendor/assets/components/highlightjs/styles/atelier-cave.light.css +113 -0
  465. data/vendor/assets/components/highlightjs/styles/atelier-dune-dark.css +69 -0
  466. data/vendor/assets/components/highlightjs/styles/atelier-dune-light.css +69 -0
  467. data/vendor/assets/components/highlightjs/styles/atelier-dune.dark.css +94 -0
  468. data/vendor/assets/components/highlightjs/styles/atelier-dune.light.css +94 -0
  469. data/vendor/assets/components/highlightjs/styles/atelier-estuary-dark.css +84 -0
  470. data/vendor/assets/components/highlightjs/styles/atelier-estuary-light.css +84 -0
  471. data/vendor/assets/components/highlightjs/styles/atelier-estuary.dark.css +113 -0
  472. data/vendor/assets/components/highlightjs/styles/atelier-estuary.light.css +113 -0
  473. data/vendor/assets/components/highlightjs/styles/atelier-forest-dark.css +69 -0
  474. data/vendor/assets/components/highlightjs/styles/atelier-forest-light.css +69 -0
  475. data/vendor/assets/components/highlightjs/styles/atelier-forest.dark.css +94 -0
  476. data/vendor/assets/components/highlightjs/styles/atelier-forest.light.css +94 -0
  477. data/vendor/assets/components/highlightjs/styles/atelier-heath-dark.css +69 -0
  478. data/vendor/assets/components/highlightjs/styles/atelier-heath-light.css +69 -0
  479. data/vendor/assets/components/highlightjs/styles/atelier-heath.dark.css +94 -0
  480. data/vendor/assets/components/highlightjs/styles/atelier-heath.light.css +94 -0
  481. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-dark.css +69 -0
  482. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-light.css +69 -0
  483. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.dark.css +94 -0
  484. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.light.css +94 -0
  485. data/vendor/assets/components/highlightjs/styles/atelier-plateau-dark.css +84 -0
  486. data/vendor/assets/components/highlightjs/styles/atelier-plateau-light.css +84 -0
  487. data/vendor/assets/components/highlightjs/styles/atelier-plateau.dark.css +113 -0
  488. data/vendor/assets/components/highlightjs/styles/atelier-plateau.light.css +113 -0
  489. data/vendor/assets/components/highlightjs/styles/atelier-savanna-dark.css +84 -0
  490. data/vendor/assets/components/highlightjs/styles/atelier-savanna-light.css +84 -0
  491. data/vendor/assets/components/highlightjs/styles/atelier-savanna.dark.css +113 -0
  492. data/vendor/assets/components/highlightjs/styles/atelier-savanna.light.css +113 -0
  493. data/vendor/assets/components/highlightjs/styles/atelier-seaside-dark.css +69 -0
  494. data/vendor/assets/components/highlightjs/styles/atelier-seaside-light.css +69 -0
  495. data/vendor/assets/components/highlightjs/styles/atelier-seaside.dark.css +94 -0
  496. data/vendor/assets/components/highlightjs/styles/atelier-seaside.light.css +94 -0
  497. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-dark.css +69 -0
  498. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-light.css +69 -0
  499. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.dark.css +94 -0
  500. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.light.css +94 -0
  501. data/vendor/assets/components/highlightjs/styles/atom-one-dark.css +96 -0
  502. data/vendor/assets/components/highlightjs/styles/atom-one-light.css +96 -0
  503. data/vendor/assets/components/highlightjs/styles/brown-paper.css +64 -0
  504. data/vendor/assets/components/highlightjs/styles/brown-papersq.png +0 -0
  505. data/vendor/assets/components/highlightjs/styles/brown_paper.css +103 -0
  506. data/vendor/assets/components/highlightjs/styles/brown_papersq.png +0 -0
  507. data/vendor/assets/components/highlightjs/styles/codepen-embed.css +60 -0
  508. data/vendor/assets/components/highlightjs/styles/color-brewer.css +71 -0
  509. data/vendor/assets/components/highlightjs/styles/darcula.css +77 -0
  510. data/vendor/assets/components/highlightjs/styles/dark.css +63 -0
  511. data/vendor/assets/components/highlightjs/styles/darkula.css +6 -0
  512. data/vendor/assets/components/highlightjs/styles/default.css +99 -0
  513. data/vendor/assets/components/highlightjs/styles/docco.css +97 -0
  514. data/vendor/assets/components/highlightjs/styles/dracula.css +76 -0
  515. data/vendor/assets/components/highlightjs/styles/far.css +71 -0
  516. data/vendor/assets/components/highlightjs/styles/foundation.css +88 -0
  517. data/vendor/assets/components/highlightjs/styles/github-gist.css +71 -0
  518. data/vendor/assets/components/highlightjs/styles/github.css +99 -0
  519. data/vendor/assets/components/highlightjs/styles/googlecode.css +89 -0
  520. data/vendor/assets/components/highlightjs/styles/grayscale.css +101 -0
  521. data/vendor/assets/components/highlightjs/styles/gruvbox-dark.css +108 -0
  522. data/vendor/assets/components/highlightjs/styles/gruvbox-light.css +108 -0
  523. data/vendor/assets/components/highlightjs/styles/hopscotch.css +83 -0
  524. data/vendor/assets/components/highlightjs/styles/hybrid.css +102 -0
  525. data/vendor/assets/components/highlightjs/styles/idea.css +97 -0
  526. data/vendor/assets/components/highlightjs/styles/ir-black.css +73 -0
  527. data/vendor/assets/components/highlightjs/styles/ir_black.css +106 -0
  528. data/vendor/assets/components/highlightjs/styles/kimbie.dark.css +74 -0
  529. data/vendor/assets/components/highlightjs/styles/kimbie.light.css +74 -0
  530. data/vendor/assets/components/highlightjs/styles/magula.css +70 -0
  531. data/vendor/assets/components/highlightjs/styles/mono-blue.css +59 -0
  532. data/vendor/assets/components/highlightjs/styles/monokai-sublime.css +83 -0
  533. data/vendor/assets/components/highlightjs/styles/monokai.css +70 -0
  534. data/vendor/assets/components/highlightjs/styles/monokai_sublime.css +154 -0
  535. data/vendor/assets/components/highlightjs/styles/obsidian.css +88 -0
  536. data/vendor/assets/components/highlightjs/styles/ocean.css +74 -0
  537. data/vendor/assets/components/highlightjs/styles/paraiso-dark.css +72 -0
  538. data/vendor/assets/components/highlightjs/styles/paraiso-light.css +72 -0
  539. data/vendor/assets/components/highlightjs/styles/paraiso.dark.css +96 -0
  540. data/vendor/assets/components/highlightjs/styles/paraiso.light.css +96 -0
  541. data/vendor/assets/components/highlightjs/styles/pojoaque.css +83 -0
  542. data/vendor/assets/components/highlightjs/styles/pojoaque.jpg +0 -0
  543. data/vendor/assets/components/highlightjs/styles/purebasic.css +96 -0
  544. data/vendor/assets/components/highlightjs/styles/qtcreator_dark.css +83 -0
  545. data/vendor/assets/components/highlightjs/styles/qtcreator_light.css +83 -0
  546. data/vendor/assets/components/highlightjs/styles/railscasts.css +106 -0
  547. data/vendor/assets/components/highlightjs/styles/rainbow.css +85 -0
  548. data/vendor/assets/components/highlightjs/styles/routeros.css +108 -0
  549. data/vendor/assets/components/highlightjs/styles/school-book.css +72 -0
  550. data/vendor/assets/components/highlightjs/styles/school-book.png +0 -0
  551. data/vendor/assets/components/highlightjs/styles/school_book.css +111 -0
  552. data/vendor/assets/components/highlightjs/styles/school_book.png +0 -0
  553. data/vendor/assets/components/highlightjs/styles/solarized-dark.css +84 -0
  554. data/vendor/assets/components/highlightjs/styles/solarized-light.css +84 -0
  555. data/vendor/assets/components/highlightjs/styles/solarized_dark.css +107 -0
  556. data/vendor/assets/components/highlightjs/styles/solarized_light.css +107 -0
  557. data/vendor/assets/components/highlightjs/styles/sunburst.css +102 -0
  558. data/vendor/assets/components/highlightjs/styles/tomorrow-night-blue.css +75 -0
  559. data/vendor/assets/components/highlightjs/styles/tomorrow-night-bright.css +74 -0
  560. data/vendor/assets/components/highlightjs/styles/tomorrow-night-eighties.css +74 -0
  561. data/vendor/assets/components/highlightjs/styles/tomorrow-night.css +75 -0
  562. data/vendor/assets/components/highlightjs/styles/tomorrow.css +72 -0
  563. data/vendor/assets/components/highlightjs/styles/vs.css +68 -0
  564. data/vendor/assets/components/highlightjs/styles/vs2015.css +115 -0
  565. data/vendor/assets/components/highlightjs/styles/xcode.css +93 -0
  566. data/vendor/assets/components/highlightjs/styles/xt256.css +92 -0
  567. data/vendor/assets/components/highlightjs/styles/zenburn.css +80 -0
  568. data/vendor/assets/components/jquery/.bower.json +25 -0
  569. data/vendor/assets/components/jquery/AUTHORS.txt +313 -0
  570. data/vendor/assets/components/jquery/LICENSE.txt +36 -0
  571. data/vendor/assets/components/jquery/README.md +67 -0
  572. data/vendor/assets/components/jquery/bower.json +14 -0
  573. data/vendor/assets/components/jquery/dist/core.js +399 -0
  574. data/vendor/assets/components/jquery/dist/jquery.js +10364 -0
  575. data/vendor/assets/components/jquery/dist/jquery.min.js +2 -0
  576. data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
  577. data/vendor/assets/components/jquery/dist/jquery.slim.js +8269 -0
  578. data/vendor/assets/components/jquery/dist/jquery.slim.min.js +2 -0
  579. data/vendor/assets/components/jquery/dist/jquery.slim.min.map +1 -0
  580. data/vendor/assets/components/jquery/external/sizzle/LICENSE.txt +36 -0
  581. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.js +2272 -0
  582. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  583. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  584. data/vendor/assets/components/jquery/src/.eslintrc.json +5 -0
  585. data/vendor/assets/components/jquery/src/ajax.js +856 -0
  586. data/vendor/assets/components/jquery/src/ajax/jsonp.js +103 -0
  587. data/vendor/assets/components/jquery/src/ajax/load.js +77 -0
  588. data/vendor/assets/components/jquery/src/ajax/parseXML.js +30 -0
  589. data/vendor/assets/components/jquery/src/ajax/script.js +77 -0
  590. data/vendor/assets/components/jquery/src/ajax/var/location.js +5 -0
  591. data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
  592. data/vendor/assets/components/jquery/src/ajax/var/rquery.js +5 -0
  593. data/vendor/assets/components/jquery/src/ajax/xhr.js +170 -0
  594. data/vendor/assets/components/jquery/src/attributes.js +13 -0
  595. data/vendor/assets/components/jquery/src/attributes/attr.js +141 -0
  596. data/vendor/assets/components/jquery/src/attributes/classes.js +186 -0
  597. data/vendor/assets/components/jquery/src/attributes/prop.js +143 -0
  598. data/vendor/assets/components/jquery/src/attributes/support.js +33 -0
  599. data/vendor/assets/components/jquery/src/attributes/val.js +191 -0
  600. data/vendor/assets/components/jquery/src/callbacks.js +236 -0
  601. data/vendor/assets/components/jquery/src/core.js +399 -0
  602. data/vendor/assets/components/jquery/src/core/DOMEval.js +30 -0
  603. data/vendor/assets/components/jquery/src/core/access.js +72 -0
  604. data/vendor/assets/components/jquery/src/core/camelCase.js +23 -0
  605. data/vendor/assets/components/jquery/src/core/init.js +129 -0
  606. data/vendor/assets/components/jquery/src/core/nodeName.js +13 -0
  607. data/vendor/assets/components/jquery/src/core/parseHTML.js +65 -0
  608. data/vendor/assets/components/jquery/src/core/ready-no-deferred.js +97 -0
  609. data/vendor/assets/components/jquery/src/core/ready.js +86 -0
  610. data/vendor/assets/components/jquery/src/core/readyException.js +13 -0
  611. data/vendor/assets/components/jquery/src/core/stripAndCollapse.js +14 -0
  612. data/vendor/assets/components/jquery/src/core/support.js +20 -0
  613. data/vendor/assets/components/jquery/src/core/toType.js +20 -0
  614. data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +6 -0
  615. data/vendor/assets/components/jquery/src/css.js +481 -0
  616. data/vendor/assets/components/jquery/src/css/addGetHookIf.js +26 -0
  617. data/vendor/assets/components/jquery/src/css/adjustCSS.js +73 -0
  618. data/vendor/assets/components/jquery/src/css/curCSS.js +65 -0
  619. data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  620. data/vendor/assets/components/jquery/src/css/showHide.js +105 -0
  621. data/vendor/assets/components/jquery/src/css/support.js +102 -0
  622. data/vendor/assets/components/jquery/src/css/var/cssExpand.js +5 -0
  623. data/vendor/assets/components/jquery/src/css/var/getStyles.js +17 -0
  624. data/vendor/assets/components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  625. data/vendor/assets/components/jquery/src/css/var/rboxStyle.js +7 -0
  626. data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +7 -0
  627. data/vendor/assets/components/jquery/src/css/var/swap.js +26 -0
  628. data/vendor/assets/components/jquery/src/data.js +180 -0
  629. data/vendor/assets/components/jquery/src/data/Data.js +162 -0
  630. data/vendor/assets/components/jquery/src/data/var/acceptData.js +19 -0
  631. data/vendor/assets/components/jquery/src/data/var/dataPriv.js +7 -0
  632. data/vendor/assets/components/jquery/src/data/var/dataUser.js +7 -0
  633. data/vendor/assets/components/jquery/src/deferred.js +399 -0
  634. data/vendor/assets/components/jquery/src/deferred/exceptionHook.js +21 -0
  635. data/vendor/assets/components/jquery/src/deprecated.js +98 -0
  636. data/vendor/assets/components/jquery/src/dimensions.js +57 -0
  637. data/vendor/assets/components/jquery/src/effects.js +702 -0
  638. data/vendor/assets/components/jquery/src/effects/Tween.js +123 -0
  639. data/vendor/assets/components/jquery/src/effects/animatedSelector.js +15 -0
  640. data/vendor/assets/components/jquery/src/event.js +748 -0
  641. data/vendor/assets/components/jquery/src/event/ajax.js +22 -0
  642. data/vendor/assets/components/jquery/src/event/alias.js +29 -0
  643. data/vendor/assets/components/jquery/src/event/focusin.js +55 -0
  644. data/vendor/assets/components/jquery/src/event/support.js +11 -0
  645. data/vendor/assets/components/jquery/src/event/trigger.js +199 -0
  646. data/vendor/assets/components/jquery/src/exports/amd.js +26 -0
  647. data/vendor/assets/components/jquery/src/exports/global.js +34 -0
  648. data/vendor/assets/components/jquery/src/jquery.js +40 -0
  649. data/vendor/assets/components/jquery/src/manipulation.js +486 -0
  650. data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +23 -0
  651. data/vendor/assets/components/jquery/src/manipulation/buildFragment.js +105 -0
  652. data/vendor/assets/components/jquery/src/manipulation/getAll.js +32 -0
  653. data/vendor/assets/components/jquery/src/manipulation/setGlobalEval.js +22 -0
  654. data/vendor/assets/components/jquery/src/manipulation/support.js +35 -0
  655. data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +5 -0
  656. data/vendor/assets/components/jquery/src/manipulation/var/rscriptType.js +5 -0
  657. data/vendor/assets/components/jquery/src/manipulation/var/rtagName.js +5 -0
  658. data/vendor/assets/components/jquery/src/manipulation/wrapMap.js +29 -0
  659. data/vendor/assets/components/jquery/src/offset.js +233 -0
  660. data/vendor/assets/components/jquery/src/queue.js +145 -0
  661. data/vendor/assets/components/jquery/src/queue/delay.js +24 -0
  662. data/vendor/assets/components/jquery/src/selector-native.js +237 -0
  663. data/vendor/assets/components/jquery/src/selector-sizzle.js +19 -0
  664. data/vendor/assets/components/jquery/src/selector.js +3 -0
  665. data/vendor/assets/components/jquery/src/serialize.js +132 -0
  666. data/vendor/assets/components/jquery/src/traversing.js +191 -0
  667. data/vendor/assets/components/jquery/src/traversing/findFilter.js +97 -0
  668. data/vendor/assets/components/jquery/src/traversing/var/dir.js +22 -0
  669. data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +8 -0
  670. data/vendor/assets/components/jquery/src/traversing/var/siblings.js +17 -0
  671. data/vendor/assets/components/jquery/src/var/ObjectFunctionString.js +7 -0
  672. data/vendor/assets/components/jquery/src/var/arr.js +5 -0
  673. data/vendor/assets/components/jquery/src/var/class2type.js +6 -0
  674. data/vendor/assets/components/jquery/src/var/concat.js +7 -0
  675. data/vendor/assets/components/jquery/src/var/document.js +5 -0
  676. data/vendor/assets/components/jquery/src/var/documentElement.js +7 -0
  677. data/vendor/assets/components/jquery/src/var/fnToString.js +7 -0
  678. data/vendor/assets/components/jquery/src/var/getProto.js +5 -0
  679. data/vendor/assets/components/jquery/src/var/hasOwn.js +7 -0
  680. data/vendor/assets/components/jquery/src/var/indexOf.js +7 -0
  681. data/vendor/assets/components/jquery/src/var/isFunction.js +13 -0
  682. data/vendor/assets/components/jquery/src/var/isWindow.js +8 -0
  683. data/vendor/assets/components/jquery/src/var/pnum.js +5 -0
  684. data/vendor/assets/components/jquery/src/var/push.js +7 -0
  685. data/vendor/assets/components/jquery/src/var/rcssNum.js +9 -0
  686. data/vendor/assets/components/jquery/src/var/rnothtmlwhite.js +8 -0
  687. data/vendor/assets/components/jquery/src/var/slice.js +7 -0
  688. data/vendor/assets/components/jquery/src/var/support.js +6 -0
  689. data/vendor/assets/components/jquery/src/var/toString.js +7 -0
  690. data/vendor/assets/components/jquery/src/wrap.js +78 -0
  691. data/vendor/assets/components/markdown-it/.bower.json +38 -0
  692. data/vendor/assets/components/markdown-it/CHANGELOG.md +442 -0
  693. data/vendor/assets/components/markdown-it/CONTRIBUTING.md +15 -0
  694. data/vendor/assets/components/markdown-it/LICENSE +22 -0
  695. data/vendor/assets/components/markdown-it/Procfile +1 -0
  696. data/vendor/assets/components/markdown-it/README.md +294 -0
  697. data/vendor/assets/components/markdown-it/bin/markdown-it.js +113 -0
  698. data/vendor/assets/components/markdown-it/bower.json +28 -0
  699. data/vendor/assets/components/markdown-it/dist/markdown-it.js +7963 -0
  700. data/vendor/assets/components/markdown-it/dist/markdown-it.min.js +1 -0
  701. data/vendor/assets/components/markdown-it/package.json +64 -0
  702. data/vendor/assets/components/plantuml-encoder/.bower.json +29 -0
  703. data/vendor/assets/components/plantuml-encoder/LICENSE +19 -0
  704. data/vendor/assets/components/plantuml-encoder/README.md +38 -0
  705. data/vendor/assets/components/plantuml-encoder/bower.json +20 -0
  706. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.js +3994 -0
  707. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.min.js +1 -0
  708. data/vendor/assets/components/plantuml-encoder/package.json +33 -0
  709. data/vendor/assets/components/raphael/.bower.json +45 -0
  710. data/vendor/assets/components/raphael/bower.json +31 -0
  711. data/vendor/assets/components/raphael/dev/banner.txt +8 -0
  712. data/vendor/assets/components/raphael/dev/raphael.amd.js +14 -0
  713. data/vendor/assets/components/raphael/dev/raphael.core.js +5413 -0
  714. data/vendor/assets/components/raphael/dev/raphael.svg.js +1428 -0
  715. data/vendor/assets/components/raphael/dev/raphael.vml.js +1010 -0
  716. data/vendor/assets/components/raphael/dev/test/svg/dom.js +295 -0
  717. data/vendor/assets/components/raphael/dev/test/vml/dom.js +5 -0
  718. data/vendor/assets/components/raphael/license.txt +21 -0
  719. data/vendor/assets/components/raphael/raphael.js +8330 -0
  720. data/vendor/assets/components/raphael/raphael.min.js +3 -0
  721. data/vendor/assets/components/raphael/raphael.no-deps.js +7959 -0
  722. data/vendor/assets/components/raphael/raphael.no-deps.min.js +3 -0
  723. data/vendor/assets/components/raphael/webpack.config.js +62 -0
  724. data/vendor/assets/components/squire-rte/.bower.json +34 -0
  725. data/vendor/assets/components/squire-rte/Demo.html +143 -0
  726. data/vendor/assets/components/squire-rte/LICENSE +21 -0
  727. data/vendor/assets/components/squire-rte/Makefile +22 -0
  728. data/vendor/assets/components/squire-rte/README.md +473 -0
  729. data/vendor/assets/components/squire-rte/bower.json +24 -0
  730. data/vendor/assets/components/squire-rte/build/document.html +54 -0
  731. data/vendor/assets/components/squire-rte/build/squire-raw.js +4722 -0
  732. data/vendor/assets/components/squire-rte/build/squire.js +2 -0
  733. data/vendor/assets/components/squire-rte/package.json +31 -0
  734. data/vendor/assets/components/squire-rte/source/Clean.js +358 -0
  735. data/vendor/assets/components/squire-rte/source/Clipboard.js +331 -0
  736. data/vendor/assets/components/squire-rte/source/Constants.js +60 -0
  737. data/vendor/assets/components/squire-rte/source/Editor.js +2201 -0
  738. data/vendor/assets/components/squire-rte/source/KeyHandlers.js +502 -0
  739. data/vendor/assets/components/squire-rte/source/Node.js +553 -0
  740. data/vendor/assets/components/squire-rte/source/Range.js +540 -0
  741. data/vendor/assets/components/squire-rte/source/TreeWalker.js +118 -0
  742. data/vendor/assets/components/squire-rte/source/document.html +54 -0
  743. data/vendor/assets/components/squire-rte/source/exports.js +42 -0
  744. data/vendor/assets/components/squire-rte/source/intro.js +6 -0
  745. data/vendor/assets/components/squire-rte/source/outro.js +22 -0
  746. data/vendor/assets/components/to-mark/.bower.json +35 -0
  747. data/vendor/assets/components/to-mark/bower.json +22 -0
  748. data/vendor/assets/components/to-mark/demo/demo.html +24 -0
  749. data/vendor/assets/components/to-mark/demo/demo2.html +94 -0
  750. data/vendor/assets/components/to-mark/dist/to-mark.js +1283 -0
  751. data/vendor/assets/components/to-mark/dist/to-mark.min.js +1 -0
  752. data/vendor/assets/components/to-mark/gulpfile.js +112 -0
  753. data/vendor/assets/components/to-mark/karma.conf.js +260 -0
  754. data/vendor/assets/components/to-mark/package-lock.json +13061 -0
  755. data/vendor/assets/components/to-mark/package.json +53 -0
  756. data/vendor/assets/components/tui-chart/.bower.json +44 -0
  757. data/vendor/assets/components/tui-chart/CODE_OF_CONDUCT.md +73 -0
  758. data/vendor/assets/components/tui-chart/CONTRIBUTING.md +91 -0
  759. data/vendor/assets/components/tui-chart/LICENSE +21 -0
  760. data/vendor/assets/components/tui-chart/README.md +142 -0
  761. data/vendor/assets/components/tui-chart/bower.json +33 -0
  762. data/vendor/assets/components/tui-chart/dist/maps/china.js +10 -0
  763. data/vendor/assets/components/tui-chart/dist/maps/japan.js +10 -0
  764. data/vendor/assets/components/tui-chart/dist/maps/singapore.js +10 -0
  765. data/vendor/assets/components/tui-chart/dist/maps/south-korea.js +10 -0
  766. data/vendor/assets/components/tui-chart/dist/maps/taiwan.js +10 -0
  767. data/vendor/assets/components/tui-chart/dist/maps/thailand.js +10 -0
  768. data/vendor/assets/components/tui-chart/dist/maps/usa.js +10 -0
  769. data/vendor/assets/components/tui-chart/dist/maps/world.js +11 -0
  770. data/vendor/assets/components/tui-chart/dist/tui-chart.css +704 -0
  771. data/vendor/assets/components/tui-chart/dist/tui-chart.js +40567 -0
  772. data/vendor/assets/components/tui-chart/dist/tui-chart.min.css +10 -0
  773. data/vendor/assets/components/tui-chart/dist/tui-chart.min.js +20 -0
  774. data/vendor/assets/components/tui-chart/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  775. data/vendor/assets/components/tui-chart/docs/ISSUE_TEMPLATE.md +24 -0
  776. data/vendor/assets/components/tui-chart/docs/PULL_REQUEST_TEMPLATE.md +42 -0
  777. data/vendor/assets/components/tui-chart/docs/README.md +11 -0
  778. data/vendor/assets/components/tui-chart/docs/wiki/README.md +27 -0
  779. data/vendor/assets/components/tui-chart/docs/wiki/_Sidebar.md +31 -0
  780. data/vendor/assets/components/tui-chart/docs/wiki/chart-export-menu.md +66 -0
  781. data/vendor/assets/components/tui-chart/docs/wiki/chart-type-radial.md +121 -0
  782. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bar,column.md +312 -0
  783. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bubble.md +63 -0
  784. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-column-line-combo.md +104 -0
  785. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-heatmap.md +39 -0
  786. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line,area.md +333 -0
  787. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-area-combo.md +78 -0
  788. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-scatter-combo.md +101 -0
  789. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-map.md +153 -0
  790. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie-donut-combo.md +98 -0
  791. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie.md +186 -0
  792. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-scatter.md +58 -0
  793. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-treemap.md +158 -0
  794. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-china-map.md +38 -0
  795. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-japan-map.md +51 -0
  796. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-singapore-map.md +9 -0
  797. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-south-korea-map.md +21 -0
  798. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-taiwan-map.md +26 -0
  799. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-thailand-map.md +82 -0
  800. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-usa-map.md +55 -0
  801. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-world-map.md +180 -0
  802. data/vendor/assets/components/tui-chart/docs/wiki/features-axes.md +209 -0
  803. data/vendor/assets/components/tui-chart/docs/wiki/features-chart.md +157 -0
  804. data/vendor/assets/components/tui-chart/docs/wiki/features-circle-legend.md +20 -0
  805. data/vendor/assets/components/tui-chart/docs/wiki/features-legend.md +89 -0
  806. data/vendor/assets/components/tui-chart/docs/wiki/features-plot.md +141 -0
  807. data/vendor/assets/components/tui-chart/docs/wiki/features-series.md +240 -0
  808. data/vendor/assets/components/tui-chart/docs/wiki/features-tooltip.md +223 -0
  809. data/vendor/assets/components/tui-chart/docs/wiki/getting-started.md +74 -0
  810. data/vendor/assets/components/tui-chart/docs/wiki/import-chart-data-from-existing-table-element.md +150 -0
  811. data/vendor/assets/components/tui-chart/docs/wiki/table-of-supported-options.md +344 -0
  812. data/vendor/assets/components/tui-chart/docs/wiki/theme.md +338 -0
  813. data/vendor/assets/components/tui-chart/package-lock.json +8881 -0
  814. data/vendor/assets/components/tui-code-snippet/.bower.json +31 -0
  815. data/vendor/assets/components/tui-code-snippet/LICENSE +21 -0
  816. data/vendor/assets/components/tui-code-snippet/README.md +109 -0
  817. data/vendor/assets/components/tui-code-snippet/bower.json +20 -0
  818. data/vendor/assets/components/tui-code-snippet/demo/postBridge/README.md +26 -0
  819. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/popup.html +27 -0
  820. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/postBridge.html +31 -0
  821. data/vendor/assets/components/tui-code-snippet/demo/postBridge/server.js +28 -0
  822. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.js +4228 -0
  823. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.min.js +7 -0
  824. data/vendor/assets/components/tui-code-snippet/package-lock.json +6038 -0
  825. data/vendor/assets/components/tui-color-picker/.bower.json +37 -0
  826. data/vendor/assets/components/tui-color-picker/ISSUE_TEMPLATE.md +26 -0
  827. data/vendor/assets/components/tui-color-picker/LICENSE +34 -0
  828. data/vendor/assets/components/tui-color-picker/README.md +69 -0
  829. data/vendor/assets/components/tui-color-picker/bower.json +26 -0
  830. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.css +148 -0
  831. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.js +3146 -0
  832. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.css +7 -0
  833. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.js +9 -0
  834. data/vendor/assets/components/tui-color-picker/package-lock.json +8440 -0
  835. data/vendor/assets/components/tui-editor/.bower.json +71 -0
  836. data/vendor/assets/components/tui-editor/CODE_OF_CONDUCT.md +73 -0
  837. data/vendor/assets/components/tui-editor/CONTRIBUTING.md +92 -0
  838. data/vendor/assets/components/tui-editor/LICENSE +21 -0
  839. data/vendor/assets/components/tui-editor/README.md +204 -0
  840. data/vendor/assets/components/tui-editor/bower.json +59 -0
  841. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.js +36850 -0
  842. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.min.js +13 -0
  843. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.js +24646 -0
  844. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.min.js +7 -0
  845. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.js +14768 -0
  846. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.min.js +13 -0
  847. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.js +3686 -0
  848. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.min.js +7 -0
  849. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.css +239 -0
  850. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.min.css +1 -0
  851. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.js +7040 -0
  852. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.min.js +13 -0
  853. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.js +472 -0
  854. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.min.js +7 -0
  855. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.js +1241 -0
  856. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.min.js +7 -0
  857. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.js +3930 -0
  858. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.min.js +7 -0
  859. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.js +212 -0
  860. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.min.js +7 -0
  861. data/vendor/assets/components/tui-editor/dist/tui-editor.css +1166 -0
  862. data/vendor/assets/components/tui-editor/dist/tui-editor.min.css +1 -0
  863. data/vendor/assets/components/tui-editor/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  864. data/vendor/assets/components/tui-editor/docs/PULL_REQUEST_TEMPLATE.md +41 -0
  865. data/vendor/assets/components/tui-editor/docs/README.md +13 -0
  866. data/vendor/assets/components/tui-editor/docs/getting-started-with-bower.md +93 -0
  867. data/vendor/assets/components/tui-editor/docs/getting-started.md +76 -0
  868. data/vendor/assets/components/tui-editor/docs/using-extensions.md +91 -0
  869. data/vendor/assets/components/tui-editor/docs/writing-your-own-extension.md +167 -0
  870. data/vendor/assets/components/tui-editor/examples/example00-demo.html +85 -0
  871. data/vendor/assets/components/tui-editor/examples/example01-basic.html +37 -0
  872. data/vendor/assets/components/tui-editor/examples/example02-viewer-basic.html +68 -0
  873. data/vendor/assets/components/tui-editor/examples/example03-jquery.html +36 -0
  874. data/vendor/assets/components/tui-editor/examples/example04-viewer-jquery.html +67 -0
  875. data/vendor/assets/components/tui-editor/examples/example05-scrollsync.html +77 -0
  876. data/vendor/assets/components/tui-editor/examples/example06-colorsyntax.html +44 -0
  877. data/vendor/assets/components/tui-editor/examples/example07-table.html +48 -0
  878. data/vendor/assets/components/tui-editor/examples/example08-uml.html +69 -0
  879. data/vendor/assets/components/tui-editor/examples/example09-multiple-extensions.html +85 -0
  880. data/vendor/assets/components/tui-editor/examples/example10-viewer-multiple-extensions.html +86 -0
  881. data/vendor/assets/components/tui-editor/examples/example11-chart.html +60 -0
  882. data/vendor/assets/components/tui-editor/examples/example12-writing-extension.html +66 -0
  883. data/vendor/assets/components/tui-editor/examples/examples.json +41 -0
  884. data/vendor/assets/components/tui-editor/examples/explain.css +7 -0
  885. data/vendor/assets/components/tui-editor/package-lock.json +13289 -0
  886. data/vendor/assets/components/tui-editor/package.json +90 -0
  887. metadata +956 -0
@@ -0,0 +1 @@
1
+ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownit=e()}}(function(){return function e(r,t,n){function s(i,a){if(!t[i]){if(!r[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[i]={exports:{}};r[i][0].call(u.exports,function(e){var t=r[i][1][e];return s(t||e)},u,u.exports,e,r,t,n)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i<n.length;i++)s(n[i]);return s}({1:[function(e,r,t){"use strict";r.exports=e("entities/maps/entities.json")},{"entities/maps/entities.json":52}],2:[function(e,r,t){"use strict";r.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},{}],3:[function(e,r,t){"use strict";var n="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",s="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",o=new RegExp("^(?:"+n+"|"+s+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),i=new RegExp("^(?:"+n+"|"+s+")");r.exports.HTML_TAG_RE=o,r.exports.HTML_OPEN_CLOSE_TAG_RE=i},{}],4:[function(e,r,t){"use strict";function n(e){return Object.prototype.toString.call(e)}function s(e,r){return l.call(e,r)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function i(e){if(e>65535){var r=55296+((e-=65536)>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}function a(e,r){var t=0;return s(d,r)?d[r]:35===r.charCodeAt(0)&&f.test(r)&&(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10),o(t))?i(t):e}function c(e){return g[e]}var l=Object.prototype.hasOwnProperty,u=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,p=/&([a-z#][a-z0-9]{1,31});/gi,h=new RegExp(u.source+"|"+p.source,"gi"),f=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,d=e("./entities"),m=/[&<>"]/,_=/[&<>"]/g,g={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"},b=/[.?*+^$[\]\\(){}|-]/g,k=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=function(e){return Array.prototype.slice.call(arguments,1).forEach(function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach(function(t){e[t]=r[t]})}}),e},t.isString=function(e){return"[object String]"===n(e)},t.has=s,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(u,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(h,function(e,r,t){return r||a(e,t)})},t.isValidEntityCode=o,t.fromCodePoint=i,t.escapeHtml=function(e){return m.test(e)?e.replace(_,c):e},t.arrayReplaceAt=function(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return k.test(e)},t.escapeRE=function(e){return e.replace(b,"\\$&")},t.normalizeReference=function(e){return e.trim().replace(/\s+/g," ").toUpperCase()}},{"./entities":1,mdurl:58,"uc.micro":65,"uc.micro/categories/P/regex":63}],5:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":6,"./parse_link_label":7,"./parse_link_title":8}],6:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace,s=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var o,i,a=r,c={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;r<t;){if(10===(o=e.charCodeAt(r))||n(o))return c;if(62===o)return c.pos=r+1,c.str=s(e.slice(a+1,r)),c.ok=!0,c;92===o&&r+1<t?r+=2:r++}return c}for(i=0;r<t&&32!==(o=e.charCodeAt(r))&&!(o<32||127===o);)if(92===o&&r+1<t)r+=2;else{if(40===o&&i++,41===o){if(0===i)break;i--}r++}return a===r?c:0!==i?c:(c.str=s(e.slice(a,r)),c.lines=0,c.pos=r,c.ok=!0,c)}},{"../common/utils":4}],7:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,o,i,a=-1,c=e.posMax,l=e.pos;for(e.pos=r+1,n=1;e.pos<c;){if(93===(o=e.src.charCodeAt(e.pos))&&0==--n){s=!0;break}if(i=e.pos,e.md.inline.skipToken(e),91===o)if(i===e.pos-1)n++;else if(t)return e.pos=l,-1}return s&&(a=e.pos),e.pos=l,a}},{}],8:[function(e,r,t){"use strict";var n=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var s,o,i=0,a=r,c={ok:!1,pos:0,lines:0,str:""};if(r>=t)return c;if(34!==(o=e.charCodeAt(r))&&39!==o&&40!==o)return c;for(r++,40===o&&(o=41);r<t;){if((s=e.charCodeAt(r))===o)return c.pos=r+1,c.lines=i,c.str=n(e.slice(a+1,r)),c.ok=!0,c;10===s?i++:92===s&&r+1<t&&(r++,10===e.charCodeAt(r)&&i++),r++}return c}},{"../common/utils":4}],9:[function(e,r,t){"use strict";function n(e){var r=e.trim().toLowerCase();return!g.test(r)||!!b.test(r)}function s(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||k.indexOf(r.protocol)>=0))try{r.hostname=m.toASCII(r.hostname)}catch(e){}return d.encode(d.format(r))}function o(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||k.indexOf(r.protocol)>=0))try{r.hostname=m.toUnicode(r.hostname)}catch(e){}return d.decode(d.format(r))}function i(e,r){if(!(this instanceof i))return new i(e,r);r||a.isString(e)||(r=e||{},e="default"),this.inline=new h,this.block=new p,this.core=new u,this.renderer=new l,this.linkify=new f,this.validateLink=n,this.normalizeLink=s,this.normalizeLinkText=o,this.utils=a,this.helpers=a.assign({},c),this.options={},this.configure(e),r&&this.set(r)}var a=e("./common/utils"),c=e("./helpers"),l=e("./renderer"),u=e("./parser_core"),p=e("./parser_block"),h=e("./parser_inline"),f=e("linkify-it"),d=e("mdurl"),m=e("punycode"),_={default:e("./presets/default"),zero:e("./presets/zero"),commonmark:e("./presets/commonmark")},g=/^(vbscript|javascript|file|data):/,b=/^data:image\/(gif|png|jpeg|webp);/,k=["http:","https:","mailto:"];i.prototype.set=function(e){return a.assign(this.options,e),this},i.prototype.configure=function(e){var r,t=this;if(a.isString(e)&&(r=e,!(e=_[r])))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)}),this},i.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.enable(e,!0))},this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},i.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.disable(e,!0))},this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},i.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},i.prototype.parse=function(e,r){if("string"!=typeof e)throw new Error("Input data should be a String");var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},i.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},i.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},i.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=i},{"./common/utils":4,"./helpers":5,"./parser_block":10,"./parser_core":11,"./parser_inline":12,"./presets/commonmark":13,"./presets/default":14,"./presets/zero":15,"./renderer":16,"linkify-it":53,mdurl:58,punycode:60}],10:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1],{alt:(o[e][2]||[]).slice()})}var s=e("./ruler"),o=[["table",e("./rules_block/table"),["paragraph","reference"]],["code",e("./rules_block/code")],["fence",e("./rules_block/fence"),["paragraph","reference","blockquote","list"]],["blockquote",e("./rules_block/blockquote"),["paragraph","reference","blockquote","list"]],["hr",e("./rules_block/hr"),["paragraph","reference","blockquote","list"]],["list",e("./rules_block/list"),["paragraph","reference","blockquote"]],["reference",e("./rules_block/reference")],["heading",e("./rules_block/heading"),["paragraph","reference","blockquote"]],["lheading",e("./rules_block/lheading")],["html_block",e("./rules_block/html_block"),["paragraph","reference","blockquote"]],["paragraph",e("./rules_block/paragraph")]];n.prototype.tokenize=function(e,r,t){for(var n,s=this.ruler.getRules(""),o=s.length,i=r,a=!1,c=e.md.options.maxNesting;i<t&&(e.line=i=e.skipEmptyLines(i),!(i>=t))&&!(e.sCount[i]<e.blkIndent);){if(e.level>=c){e.line=t;break}for(n=0;n<o&&!s[n](e,i,t,!1);n++);e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),(i=e.line)<t&&e.isEmpty(i)&&(a=!0,i++,e.line=i)}},n.prototype.parse=function(e,r,t,n){var s;e&&(s=new this.State(e,r,t,n),this.tokenize(s,s.line,s.lineMax))},n.prototype.State=e("./rules_block/state_block"),r.exports=n},{"./ruler":17,"./rules_block/blockquote":18,"./rules_block/code":19,"./rules_block/fence":20,"./rules_block/heading":21,"./rules_block/hr":22,"./rules_block/html_block":23,"./rules_block/lheading":24,"./rules_block/list":25,"./rules_block/paragraph":26,"./rules_block/reference":27,"./rules_block/state_block":28,"./rules_block/table":29}],11:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1])}var s=e("./ruler"),o=[["normalize",e("./rules_core/normalize")],["block",e("./rules_core/block")],["inline",e("./rules_core/inline")],["linkify",e("./rules_core/linkify")],["replacements",e("./rules_core/replacements")],["smartquotes",e("./rules_core/smartquotes")]];n.prototype.process=function(e){var r,t,n;for(r=0,t=(n=this.ruler.getRules("")).length;r<t;r++)n[r](e)},n.prototype.State=e("./rules_core/state_core"),r.exports=n},{"./ruler":17,"./rules_core/block":30,"./rules_core/inline":31,"./rules_core/linkify":32,"./rules_core/normalize":33,"./rules_core/replacements":34,"./rules_core/smartquotes":35,"./rules_core/state_core":36}],12:[function(e,r,t){"use strict";function n(){var e;for(this.ruler=new s,e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1]);for(this.ruler2=new s,e=0;e<i.length;e++)this.ruler2.push(i[e][0],i[e][1])}var s=e("./ruler"),o=[["text",e("./rules_inline/text")],["newline",e("./rules_inline/newline")],["escape",e("./rules_inline/escape")],["backticks",e("./rules_inline/backticks")],["strikethrough",e("./rules_inline/strikethrough").tokenize],["emphasis",e("./rules_inline/emphasis").tokenize],["link",e("./rules_inline/link")],["image",e("./rules_inline/image")],["autolink",e("./rules_inline/autolink")],["html_inline",e("./rules_inline/html_inline")],["entity",e("./rules_inline/entity")]],i=[["balance_pairs",e("./rules_inline/balance_pairs")],["strikethrough",e("./rules_inline/strikethrough").postProcess],["emphasis",e("./rules_inline/emphasis").postProcess],["text_collapse",e("./rules_inline/text_collapse")]];n.prototype.skipToken=function(e){var r,t,n=e.pos,s=this.ruler.getRules(""),o=s.length,i=e.md.options.maxNesting,a=e.cache;if(void 0===a[n]){if(e.level<i)for(t=0;t<o&&(e.level++,r=s[t](e,!0),e.level--,!r);t++);else e.pos=e.posMax;r||e.pos++,a[n]=e.pos}else e.pos=a[n]},n.prototype.tokenize=function(e){for(var r,t,n=this.ruler.getRules(""),s=n.length,o=e.posMax,i=e.md.options.maxNesting;e.pos<o;){if(e.level<i)for(t=0;t<s&&!(r=n[t](e,!1));t++);if(r){if(e.pos>=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},n.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),i=(o=this.ruler2.getRules("")).length,s=0;s<i;s++)o[s](a)},n.prototype.State=e("./rules_inline/state_inline"),r.exports=n},{"./ruler":17,"./rules_inline/autolink":37,"./rules_inline/backticks":38,"./rules_inline/balance_pairs":39,"./rules_inline/emphasis":40,"./rules_inline/entity":41,"./rules_inline/escape":42,"./rules_inline/html_inline":43,"./rules_inline/image":44,"./rules_inline/link":45,"./rules_inline/newline":46,"./rules_inline/state_inline":47,"./rules_inline/strikethrough":48,"./rules_inline/text":49,"./rules_inline/text_collapse":50}],13:[function(e,r,t){"use strict";r.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},{}],14:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},{}],15:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},{}],16:[function(e,r,t){"use strict";function n(){this.rules=s({},a)}var s=e("./common/utils").assign,o=e("./common/utils").unescapeAll,i=e("./common/utils").escapeHtml,a={};a.code_inline=function(e,r,t,n,s){var o=e[r];return"<code"+s.renderAttrs(o)+">"+i(e[r].content)+"</code>"},a.code_block=function(e,r,t,n,s){var o=e[r];return"<pre"+s.renderAttrs(o)+"><code>"+i(e[r].content)+"</code></pre>\n"},a.fence=function(e,r,t,n,s){var a,c,l,u,p=e[r],h=p.info?o(p.info).trim():"",f="";return h&&(f=h.split(/\s+/g)[0]),0===(a=t.highlight?t.highlight(p.content,f)||i(p.content):i(p.content)).indexOf("<pre")?a+"\n":h?(c=p.attrIndex("class"),l=p.attrs?p.attrs.slice():[],c<0?l.push(["class",t.langPrefix+f]):l[c][1]+=" "+t.langPrefix+f,u={attrs:l},"<pre><code"+s.renderAttrs(u)+">"+a+"</code></pre>\n"):"<pre><code"+s.renderAttrs(p)+">"+a+"</code></pre>\n"},a.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},a.hardbreak=function(e,r,t){return t.xhtmlOut?"<br />\n":"<br>\n"},a.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"<br />\n":"<br>\n":"\n"},a.text=function(e,r){return i(e[r].content)},a.html_block=function(e,r){return e[r].content},a.html_inline=function(e,r){return e[r].content},n.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;r<t;r++)n+=" "+i(e.attrs[r][0])+'="'+i(e.attrs[r][1])+'"';return n},n.prototype.renderToken=function(e,r,t){var n,s="",o=!1,i=e[r];return i.hidden?"":(i.block&&-1!==i.nesting&&r&&e[r-1].hidden&&(s+="\n"),s+=(-1===i.nesting?"</":"<")+i.tag,s+=this.renderAttrs(i),0===i.nesting&&t.xhtmlOut&&(s+=" /"),i.block&&(o=!0,1===i.nesting&&r+1<e.length&&("inline"===(n=e[r+1]).type||n.hidden?o=!1:-1===n.nesting&&n.tag===i.tag&&(o=!1))),s+=o?">\n":">")},n.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;i<a;i++)void 0!==o[n=e[i].type]?s+=o[n](e,i,r,t,this):s+=this.renderToken(e,i,r);return s},n.prototype.renderInlineAsText=function(e,r,t){for(var n="",s=0,o=e.length;s<o;s++)"text"===e[s].type?n+=e[s].content:"image"===e[s].type&&(n+=this.renderInlineAsText(e[s].children,r,t));return n},n.prototype.render=function(e,r,t){var n,s,o,i="",a=this.rules;for(n=0,s=e.length;n<s;n++)"inline"===(o=e[n].type)?i+=this.renderInline(e[n].children,r,t):void 0!==a[o]?i+=a[e[n].type](e,n,r,t,this):i+=this.renderToken(e,n,r,t);return i},r.exports=n},{"./common/utils":4}],17:[function(e,r,t){"use strict";function n(){this.__rules__=[],this.__cache__=null}n.prototype.__find__=function(e){for(var r=0;r<this.__rules__.length;r++)if(this.__rules__[r].name===e)return r;return-1},n.prototype.__compile__=function(){var e=this,r=[""];e.__rules__.forEach(function(e){e.enabled&&e.alt.forEach(function(e){r.indexOf(e)<0&&r.push(e)})}),e.__cache__={},r.forEach(function(r){e.__cache__[r]=[],e.__rules__.forEach(function(t){t.enabled&&(r&&t.alt.indexOf(r)<0||e.__cache__[r].push(t.fn))})})},n.prototype.at=function(e,r,t){var n=this.__find__(e),s=t||{};if(-1===n)throw new Error("Parser rule not found: "+e);this.__rules__[n].fn=r,this.__rules__[n].alt=s.alt||[],this.__cache__=null},n.prototype.before=function(e,r,t,n){var s=this.__find__(e),o=n||{};if(-1===s)throw new Error("Parser rule not found: "+e);this.__rules__.splice(s,0,{name:r,enabled:!0,fn:t,alt:o.alt||[]}),this.__cache__=null},n.prototype.after=function(e,r,t,n){var s=this.__find__(e),o=n||{};if(-1===s)throw new Error("Parser rule not found: "+e);this.__rules__.splice(s+1,0,{name:r,enabled:!0,fn:t,alt:o.alt||[]}),this.__cache__=null},n.prototype.push=function(e,r,t){var n=t||{};this.__rules__.push({name:e,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},n.prototype.enable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach(function(e){var n=this.__find__(e);if(n<0){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,t.push(e)},this),this.__cache__=null,t},n.prototype.enableOnly=function(e,r){Array.isArray(e)||(e=[e]),this.__rules__.forEach(function(e){e.enabled=!1}),this.enable(e,r)},n.prototype.disable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach(function(e){var n=this.__find__(e);if(n<0){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,t.push(e)},this),this.__cache__=null,t},n.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},r.exports=n},{}],18:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l,u,p,h,f,d,m,_,g,b,k,v,x,y,C,A,w=e.lineMax,D=e.bMarks[r]+e.tShift[r],q=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(D++))return!1;if(s)return!0;for(c=f=e.sCount[r]+D-(e.bMarks[r]+e.tShift[r]),32===e.src.charCodeAt(D)?(D++,c++,f++,o=!1,v=!0):9===e.src.charCodeAt(D)?(v=!0,(e.bsCount[r]+f)%4==3?(D++,c++,f++,o=!1):o=!0):v=!1,d=[e.bMarks[r]],e.bMarks[r]=D;D<q&&(i=e.src.charCodeAt(D),n(i));)9===i?f+=4-(f+e.bsCount[r]+(o?1:0))%4:f++,D++;for(m=[e.bsCount[r]],e.bsCount[r]=e.sCount[r]+1+(v?1:0),u=D>=q,b=[e.sCount[r]],e.sCount[r]=f-c,k=[e.tShift[r]],e.tShift[r]=D-e.bMarks[r],y=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",A=!1,h=r+1;h<t&&(e.sCount[h]<e.blkIndent&&(A=!0),D=e.bMarks[h]+e.tShift[h],q=e.eMarks[h],!(D>=q));h++)if(62!==e.src.charCodeAt(D++)||A){if(u)break;for(x=!1,a=0,l=y.length;a<l;a++)if(y[a](e,h,t,!0)){x=!0;break}if(x){e.lineMax=h,0!==e.blkIndent&&(d.push(e.bMarks[h]),m.push(e.bsCount[h]),k.push(e.tShift[h]),b.push(e.sCount[h]),e.sCount[h]-=e.blkIndent);break}d.push(e.bMarks[h]),m.push(e.bsCount[h]),k.push(e.tShift[h]),b.push(e.sCount[h]),e.sCount[h]=-1}else{for(c=f=e.sCount[h]+D-(e.bMarks[h]+e.tShift[h]),32===e.src.charCodeAt(D)?(D++,c++,f++,o=!1,v=!0):9===e.src.charCodeAt(D)?(v=!0,(e.bsCount[h]+f)%4==3?(D++,c++,f++,o=!1):o=!0):v=!1,d.push(e.bMarks[h]),e.bMarks[h]=D;D<q&&(i=e.src.charCodeAt(D),n(i));)9===i?f+=4-(f+e.bsCount[h]+(o?1:0))%4:f++,D++;u=D>=q,m.push(e.bsCount[h]),e.bsCount[h]=e.sCount[h]+1+(v?1:0),b.push(e.sCount[h]),e.sCount[h]=f-c,k.push(e.tShift[h]),e.tShift[h]=D-e.bMarks[h]}for(_=e.blkIndent,e.blkIndent=0,(C=e.push("blockquote_open","blockquote",1)).markup=">",C.map=p=[r,0],e.md.block.tokenize(e,r,h),(C=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=w,e.parentType=g,p[1]=e.line,a=0;a<k.length;a++)e.bMarks[a+r]=d[a],e.tShift[a+r]=k[a],e.sCount[a+r]=b[a],e.bsCount[a+r]=m[a];return e.blkIndent=_,!0}},{"../common/utils":4}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,o;if(e.sCount[r]-e.blkIndent<4)return!1;for(s=n=r+1;n<t;)if(e.isEmpty(n))n++;else{if(!(e.sCount[n]-e.blkIndent>=4))break;s=++n}return e.line=s,o=e.push("code_block","code",0),o.content=e.getLines(r,s,4+e.blkIndent,!0),o.map=[r,e.line],!0}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(h+3>f)return!1;if(126!==(s=e.src.charCodeAt(h))&&96!==s)return!1;if(c=h,h=e.skipChars(h,s),(o=h-c)<3)return!1;if(u=e.src.slice(c,h),(i=e.src.slice(h,f)).indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;for(a=r;!(++a>=t)&&(h=c=e.bMarks[a]+e.tShift[a],f=e.eMarks[a],!(h<f&&e.sCount[a]<e.blkIndent));)if(e.src.charCodeAt(h)===s&&!(e.sCount[a]-e.blkIndent>=4||(h=e.skipChars(h,s))-c<o||(h=e.skipSpaces(h))<f)){p=!0;break}return o=e.sCount[r],e.line=a+(p?1:0),l=e.push("fence","code",0),l.info=i,l.content=e.getLines(r+1,a,o,!0),l.markup=u,l.map=[r,e.line],!0}},{}],21:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(35!==(o=e.src.charCodeAt(l))||l>=u)return!1;for(i=1,o=e.src.charCodeAt(++l);35===o&&l<u&&i<=6;)i++,o=e.src.charCodeAt(++l);return!(i>6||l<u&&!n(o))&&(!!s||(u=e.skipSpacesBack(u,l),(a=e.skipCharsBack(u,35,l))>l&&n(e.src.charCodeAt(a-1))&&(u=a),e.line=r+1,c=e.push("heading_open","h"+String(i),1),c.markup="########".slice(0,i),c.map=[r,e.line],c=e.push("inline","",0),c.content=e.src.slice(l,u).trim(),c.map=[r,e.line],c.children=[],c=e.push("heading_close","h"+String(i),-1),c.markup="########".slice(0,i),!0))}},{"../common/utils":4}],22:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(l++))&&45!==o&&95!==o)return!1;for(i=1;l<u;){if((a=e.src.charCodeAt(l++))!==o&&!n(a))return!1;a===o&&i++}return!(i<3)&&(!!s||(e.line=r+1,c=e.push("hr","hr",0),c.map=[r,e.line],c.markup=Array(i+1).join(String.fromCharCode(o)),!0))}},{"../common/utils":4}],23:[function(e,r,t){"use strict";var n=e("../common/html_blocks"),s=e("../common/html_re").HTML_OPEN_CLOSE_TAG_RE,o=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+n.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;s<o.length&&!o[s][0].test(c);s++);if(s===o.length)return!1;if(n)return o[s][2];if(i=r+1,!o[s][1].test(c))for(;i<t&&!(e.sCount[i]<e.blkIndent);i++)if(l=e.bMarks[i]+e.tShift[i],u=e.eMarks[i],c=e.src.slice(l,u),o[s][1].test(c)){0!==c.length&&i++;break}return e.line=i,a=e.push("html_block","",0),a.map=[r,i],a.content=e.getLines(r,i,e.blkIndent,!0),!0}},{"../common/html_blocks":2,"../common/html_re":3}],24:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,o,i,a,c,l,u,p,h,f=r+1,d=e.md.block.ruler.getRules("paragraph");if(e.sCount[r]-e.blkIndent>=4)return!1;for(h=e.parentType,e.parentType="paragraph";f<t&&!e.isEmpty(f);f++)if(!(e.sCount[f]-e.blkIndent>3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f],l=e.eMarks[f],c<l&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=l))){u=61===p?1:2;break}if(!(e.sCount[f]<0)){for(s=!1,o=0,i=d.length;o<i;o++)if(d[o](e,f,t,!0)){s=!0;break}if(s)break}}return!!u&&(n=e.getLines(r,f,e.blkIndent,!1).trim(),e.line=f+1,a=e.push("heading_open","h"+String(u),1),a.markup=String.fromCharCode(p),a.map=[r,e.line],a=e.push("inline","",0),a.content=n,a.map=[r,e.line-1],a.children=[],a=e.push("heading_close","h"+String(u),-1),a.markup=String.fromCharCode(p),e.parentType=h,!0)}},{}],25:[function(e,r,t){"use strict";function n(e,r){var t,n,s,o;return n=e.bMarks[r]+e.tShift[r],s=e.eMarks[r],42!==(t=e.src.charCodeAt(n++))&&45!==t&&43!==t?-1:n<s&&(o=e.src.charCodeAt(n),!i(o))?-1:n}function s(e,r){var t,n=e.bMarks[r]+e.tShift[r],s=n,o=e.eMarks[r];if(s+1>=o)return-1;if((t=e.src.charCodeAt(s++))<48||t>57)return-1;for(;;){if(s>=o)return-1;if(!((t=e.src.charCodeAt(s++))>=48&&t<=57)){if(41===t||46===t)break;return-1}if(s-n>=10)return-1}return s<o&&(t=e.src.charCodeAt(s),!i(t))?-1:s}function o(e,r){var t,n,s=e.level+2;for(t=r+2,n=e.tokens.length-2;t<n;t++)e.tokens[t].level===s&&"paragraph_open"===e.tokens[t].type&&(e.tokens[t+2].hidden=!0,e.tokens[t].hidden=!0,t+=2)}var i=e("../common/utils").isSpace;r.exports=function(e,r,t,i){var a,c,l,u,p,h,f,d,m,_,g,b,k,v,x,y,C,A,w,D,q,E,S,F,L,z,T,I,R=!1,M=!0;if(e.sCount[r]-e.blkIndent>=4)return!1;if(i&&"paragraph"===e.parentType&&e.tShift[r]>=e.blkIndent&&(R=!0),(S=s(e,r))>=0){if(f=!0,L=e.bMarks[r]+e.tShift[r],k=Number(e.src.substr(L,S-L-1)),R&&1!==k)return!1}else{if(!((S=n(e,r))>=0))return!1;f=!1}if(R&&e.skipSpaces(S)>=e.eMarks[r])return!1;if(b=e.src.charCodeAt(S-1),i)return!0;for(g=e.tokens.length,f?(I=e.push("ordered_list_open","ol",1),1!==k&&(I.attrs=[["start",k]])):I=e.push("bullet_list_open","ul",1),I.map=_=[r,0],I.markup=String.fromCharCode(b),x=r,F=!1,T=e.md.block.ruler.getRules("list"),w=e.parentType,e.parentType="list";x<t;){for(E=S,v=e.eMarks[x],h=y=e.sCount[x]+S-(e.bMarks[r]+e.tShift[r]);E<v;){if(9===(a=e.src.charCodeAt(E)))y+=4-(y+e.bsCount[x])%4;else{if(32!==a)break;y++}E++}if(c=E,(p=c>=v?1:y-h)>4&&(p=1),u=h+p,I=e.push("list_item_open","li",1),I.markup=String.fromCharCode(b),I.map=d=[r,0],C=e.blkIndent,q=e.tight,D=e.tShift[r],A=e.sCount[r],e.blkIndent=u,e.tight=!0,e.tShift[r]=c-e.bMarks[r],e.sCount[r]=y,c>=v&&e.isEmpty(r+1)?e.line=Math.min(e.line+2,t):e.md.block.tokenize(e,r,t,!0),e.tight&&!F||(M=!1),F=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=C,e.tShift[r]=D,e.sCount[r]=A,e.tight=q,I=e.push("list_item_close","li",-1),I.markup=String.fromCharCode(b),x=r=e.line,d[1]=x,c=e.bMarks[r],x>=t)break;if(e.sCount[x]<e.blkIndent)break;for(z=!1,l=0,m=T.length;l<m;l++)if(T[l](e,x,t,!0)){z=!0;break}if(z)break;if(f){if((S=s(e,x))<0)break}else if((S=n(e,x))<0)break;if(b!==e.src.charCodeAt(S-1))break}return I=f?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1),I.markup=String.fromCharCode(b),_[1]=x,e.line=x,e.parentType=w,M&&o(e,g),!0}},{"../common/utils":4}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=r+1,l=e.md.block.ruler.getRules("paragraph"),u=e.lineMax;for(a=e.parentType,e.parentType="paragraph";c<u&&!e.isEmpty(c);c++)if(!(e.sCount[c]-e.blkIndent>3||e.sCount[c]<0)){for(n=!1,s=0,o=l.length;s<o;s++)if(l[s](e,c,u,!0)){n=!0;break}if(n)break}return t=e.getLines(r,c,e.blkIndent,!1).trim(),e.line=c,i=e.push("paragraph_open","p",1),i.map=[r,e.line],i=e.push("inline","",0),i.content=t,i.map=[r,e.line],i.children=[],i=e.push("paragraph_close","p",-1),e.parentType=a,!0}},{}],27:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r,t,o){var i,a,c,l,u,p,h,f,d,m,_,g,b,k,v,x,y=0,C=e.bMarks[r]+e.tShift[r],A=e.eMarks[r],w=r+1;if(e.sCount[r]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(C))return!1;for(;++C<A;)if(93===e.src.charCodeAt(C)&&92!==e.src.charCodeAt(C-1)){if(C+1===A)return!1;if(58!==e.src.charCodeAt(C+1))return!1;break}for(l=e.lineMax,v=e.md.block.ruler.getRules("reference"),m=e.parentType,e.parentType="reference";w<l&&!e.isEmpty(w);w++)if(!(e.sCount[w]-e.blkIndent>3||e.sCount[w]<0)){for(k=!1,p=0,h=v.length;p<h;p++)if(v[p](e,w,l,!0)){k=!0;break}if(k)break}for(A=(b=e.getLines(r,w,e.blkIndent,!1).trim()).length,C=1;C<A;C++){if(91===(i=b.charCodeAt(C)))return!1;if(93===i){d=C;break}10===i?y++:92===i&&++C<A&&10===b.charCodeAt(C)&&y++}if(d<0||58!==b.charCodeAt(d+1))return!1;for(C=d+2;C<A;C++)if(10===(i=b.charCodeAt(C)))y++;else if(!s(i))break;if(!(_=e.md.helpers.parseLinkDestination(b,C,A)).ok)return!1;if(u=e.md.normalizeLink(_.str),!e.md.validateLink(u))return!1;for(a=C=_.pos,c=y+=_.lines,g=C;C<A;C++)if(10===(i=b.charCodeAt(C)))y++;else if(!s(i))break;for(_=e.md.helpers.parseLinkTitle(b,C,A),C<A&&g!==C&&_.ok?(x=_.str,C=_.pos,y+=_.lines):(x="",C=a,y=c);C<A&&(i=b.charCodeAt(C),s(i));)C++;if(C<A&&10!==b.charCodeAt(C)&&x)for(x="",C=a,y=c;C<A&&(i=b.charCodeAt(C),s(i));)C++;return!(C<A&&10!==b.charCodeAt(C))&&(!!(f=n(b.slice(1,d)))&&(!!o||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[f]&&(e.env.references[f]={title:x,href:u}),e.parentType=m,e.line=r+y+1,!0)))}},{"../common/utils":4}],28:[function(e,r,t){"use strict";function n(e,r,t,n){var s,i,a,c,l,u,p,h;for(this.src=e,this.md=r,this.env=t,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.parentType="root",this.level=0,this.result="",h=!1,a=c=u=p=0,l=(i=this.src).length;c<l;c++){if(s=i.charCodeAt(c),!h){if(o(s)){u++,9===s?p+=4-p%4:p++;continue}h=!0}10!==s&&c!==l-1||(10!==s&&c++,this.bMarks.push(a),this.eMarks.push(c),this.tShift.push(u),this.sCount.push(p),this.bsCount.push(0),h=!1,u=0,p=0,a=c+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}var s=e("../token"),o=e("../common/utils").isSpace;n.prototype.push=function(e,r,t){var n=new s(e,r,t);return n.block=!0,t<0&&this.level--,n.level=this.level,t>0&&this.level++,this.tokens.push(n),n},n.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},n.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;e<r&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},n.prototype.skipSpaces=function(e){for(var r,t=this.src.length;e<t&&(r=this.src.charCodeAt(e),o(r));e++);return e},n.prototype.skipSpacesBack=function(e,r){if(e<=r)return e;for(;e>r;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},n.prototype.skipChars=function(e,r){for(var t=this.src.length;e<t&&this.src.charCodeAt(e)===r;e++);return e},n.prototype.skipCharsBack=function(e,r,t){if(e<=t)return e;for(;e>t;)if(r!==this.src.charCodeAt(--e))return e+1;return e},n.prototype.getLines=function(e,r,t,n){var s,i,a,c,l,u,p,h=e;if(e>=r)return"";for(u=new Array(r-e),s=0;h<r;h++,s++){for(i=0,p=c=this.bMarks[h],l=h+1<r||n?this.eMarks[h]+1:this.eMarks[h];c<l&&i<t;){if(a=this.src.charCodeAt(c),o(a))9===a?i+=4-(i+this.bsCount[h])%4:i++;else{if(!(c-p<this.tShift[h]))break;i++}c++}u[s]=i>t?new Array(i-t+1).join(" ")+this.src.slice(c,l):this.src.slice(c,l)}return u.join("")},n.prototype.Token=s,r.exports=n},{"../common/utils":4,"../token":51}],29:[function(e,r,t){"use strict";function n(e,r){var t=e.bMarks[r]+e.blkIndent,n=e.eMarks[r];return e.src.substr(t,n-t)}function s(e){var r,t=[],n=0,s=e.length,o=0,i=0,a=!1,c=0;for(r=e.charCodeAt(n);n<s;)96===r?a?(a=!1,c=n):o%2==0&&(a=!0,c=n):124!==r||o%2!=0||a||(t.push(e.substring(i,n)),i=n+1),92===r?o++:o=0,++n===s&&a&&(a=!1,n=c+1),r=e.charCodeAt(n);return t.push(e.substring(i)),t}var o=e("../common/utils").isSpace;r.exports=function(e,r,t,i){var a,c,l,u,p,h,f,d,m,_,g,b;if(r+2>t)return!1;if(p=r+1,e.sCount[p]<e.blkIndent)return!1;if(e.sCount[p]-e.blkIndent>=4)return!1;if((l=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(a=e.src.charCodeAt(l++))&&45!==a&&58!==a)return!1;for(;l<e.eMarks[p];){if(124!==(a=e.src.charCodeAt(l))&&45!==a&&58!==a&&!o(a))return!1;l++}for(h=(c=n(e,r+1)).split("|"),m=[],u=0;u<h.length;u++){if(!(_=h[u].trim())){if(0===u||u===h.length-1)continue;return!1}if(!/^:?-+:?$/.test(_))return!1;58===_.charCodeAt(_.length-1)?m.push(58===_.charCodeAt(0)?"center":"right"):58===_.charCodeAt(0)?m.push("left"):m.push("")}if(-1===(c=n(e,r).trim()).indexOf("|"))return!1;if(e.sCount[r]-e.blkIndent>=4)return!1;if(h=s(c.replace(/^\||\|$/g,"")),(f=h.length)>m.length)return!1;if(i)return!0;for((d=e.push("table_open","table",1)).map=g=[r,0],(d=e.push("thead_open","thead",1)).map=[r,r+1],(d=e.push("tr_open","tr",1)).map=[r,r+1],u=0;u<h.length;u++)(d=e.push("th_open","th",1)).map=[r,r+1],m[u]&&(d.attrs=[["style","text-align:"+m[u]]]),(d=e.push("inline","",0)).content=h[u].trim(),d.map=[r,r+1],d.children=[],d=e.push("th_close","th",-1);for(d=e.push("tr_close","tr",-1),d=e.push("thead_close","thead",-1),(d=e.push("tbody_open","tbody",1)).map=b=[r+2,0],p=r+2;p<t&&!(e.sCount[p]<e.blkIndent)&&-1!==(c=n(e,p).trim()).indexOf("|")&&!(e.sCount[p]-e.blkIndent>=4);p++){for(h=s(c.replace(/^\||\|$/g,"")),d=e.push("tr_open","tr",1),u=0;u<f;u++)d=e.push("td_open","td",1),m[u]&&(d.attrs=[["style","text-align:"+m[u]]]),(d=e.push("inline","",0)).content=h[u]?h[u].trim():"",d.children=[],d=e.push("td_close","td",-1);d=e.push("tr_close","tr",-1)}return d=e.push("tbody_close","tbody",-1),d=e.push("table_close","table",-1),g[1]=b[1]=p,e.line=p,!0}},{"../common/utils":4}],30:[function(e,r,t){"use strict";r.exports=function(e){var r;e.inlineMode?((r=new e.Token("inline","",0)).content=e.src,r.map=[0,1],r.children=[],e.tokens.push(r)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}},{}],31:[function(e,r,t){"use strict";r.exports=function(e){var r,t,n,s=e.tokens;for(t=0,n=s.length;t<n;t++)"inline"===(r=s[t]).type&&e.md.inline.parse(r.content,e.md,e.env,r.children)}},{}],32:[function(e,r,t){"use strict";function n(e){return/^<a[>\s]/i.test(e)}function s(e){return/^<\/a\s*>/i.test(e)}var o=e("../common/utils").arrayReplaceAt;r.exports=function(e){var r,t,i,a,c,l,u,p,h,f,d,m,_,g,b,k,v,x=e.tokens;if(e.md.options.linkify)for(t=0,i=x.length;t<i;t++)if("inline"===x[t].type&&e.md.linkify.pretest(x[t].content))for(_=0,r=(a=x[t].children).length-1;r>=0;r--)if("link_close"!==(l=a[r]).type){if("html_inline"===l.type&&(n(l.content)&&_>0&&_--,s(l.content)&&_++),!(_>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(h=l.content,v=e.md.linkify.match(h),u=[],m=l.level,d=0,p=0;p<v.length;p++)g=v[p].url,b=e.md.normalizeLink(g),e.md.validateLink(b)&&(k=v[p].text,k=v[p].schema?"mailto:"!==v[p].schema||/^mailto:/i.test(k)?e.md.normalizeLinkText(k):e.md.normalizeLinkText("mailto:"+k).replace(/^mailto:/,""):e.md.normalizeLinkText("http://"+k).replace(/^http:\/\//,""),(f=v[p].index)>d&&((c=new e.Token("text","",0)).content=h.slice(d,f),c.level=m,u.push(c)),(c=new e.Token("link_open","a",1)).attrs=[["href",b]],c.level=m++,c.markup="linkify",c.info="auto",u.push(c),(c=new e.Token("text","",0)).content=k,c.level=m,u.push(c),(c=new e.Token("link_close","a",-1)).level=--m,c.markup="linkify",c.info="auto",u.push(c),d=v[p].lastIndex);d<h.length&&((c=new e.Token("text","",0)).content=h.slice(d),c.level=m,u.push(c)),x[t].children=a=o(a,r,u)}}else for(r--;a[r].level!==l.level&&"link_open"!==a[r].type;)r--}},{"../common/utils":4}],33:[function(e,r,t){"use strict";var n=/\r[\n\u0085]?|[\u2424\u2028\u0085]/g,s=/\u0000/g;r.exports=function(e){var r;r=(r=e.src.replace(n,"\n")).replace(s,"\ufffd"),e.src=r}},{}],34:[function(e,r,t){"use strict";function n(e,r){return l[r.toLowerCase()]}function s(e){var r,t,s=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||s||(t.content=t.content.replace(c,n)),"link_open"===t.type&&"auto"===t.info&&s--,"link_close"===t.type&&"auto"===t.info&&s++}function o(e){var r,t,n=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||n||i.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}var i=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,a=/\((c|tm|r|p)\)/i,c=/\((c|tm|r|p)\)/gi,l={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"};r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(a.test(e.tokens[r].content)&&s(e.tokens[r].children),i.test(e.tokens[r].content)&&o(e.tokens[r].children))}},{}],35:[function(e,r,t){"use strict";function n(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function s(e,r){var t,s,c,p,h,f,d,m,_,g,b,k,v,x,y,C,A,w,D,q,E;for(D=[],t=0;t<e.length;t++){for(s=e[t],d=e[t].level,A=D.length-1;A>=0&&!(D[A].level<=d);A--);if(D.length=A+1,"text"===s.type){h=0,f=(c=s.content).length;e:for(;h<f&&(l.lastIndex=h,p=l.exec(c));){if(y=C=!0,h=p.index+1,w="'"===p[0],_=32,p.index-1>=0)_=c.charCodeAt(p.index-1);else for(A=t-1;A>=0;A--)if("text"===e[A].type){_=e[A].content.charCodeAt(e[A].content.length-1);break}if(g=32,h<f)g=c.charCodeAt(h);else for(A=t+1;A<e.length;A++)if("text"===e[A].type){g=e[A].content.charCodeAt(0);break}if(b=a(_)||i(String.fromCharCode(_)),k=a(g)||i(String.fromCharCode(g)),v=o(_),(x=o(g))?y=!1:k&&(v||b||(y=!1)),v?C=!1:b&&(x||k||(C=!1)),34===g&&'"'===p[0]&&_>=48&&_<=57&&(C=y=!1),y&&C&&(y=!1,C=k),y||C){if(C)for(A=D.length-1;A>=0&&(m=D[A],!(D[A].level<d));A--)if(m.single===w&&D[A].level===d){m=D[A],w?(q=r.md.options.quotes[2],E=r.md.options.quotes[3]):(q=r.md.options.quotes[0],E=r.md.options.quotes[1]),s.content=n(s.content,p.index,E),e[m.token].content=n(e[m.token].content,m.pos,q),h+=E.length-1,m.token===t&&(h+=q.length-1),f=(c=s.content).length,D.length=A;continue e}y?D.push({token:t,pos:p.index,single:w,level:d}):C&&w&&(s.content=n(s.content,p.index,u))}else w&&(s.content=n(s.content,p.index,u))}}}}var o=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,a=e("../common/utils").isMdAsciiPunct,c=/['"]/,l=/['"]/g,u="\u2019";r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&c.test(e.tokens[r].content)&&s(e.tokens[r].children,e)}},{"../common/utils":4}],36:[function(e,r,t){"use strict";function n(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}var s=e("../token");n.prototype.Token=s,r.exports=n},{"../token":51}],37:[function(e,r,t){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,s=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,i,a,c,l,u=e.pos;return 60===e.src.charCodeAt(u)&&!((t=e.src.slice(u)).indexOf(">")<0||(s.test(t)?(o=t.match(s),a=o[0].slice(1,-1),c=e.md.normalizeLink(a),!e.md.validateLink(c)||(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=o[0].length,0)):!n.test(t)||(i=t.match(n),a=i[0].slice(1,-1),c=e.md.normalizeLink("mailto:"+a),!e.md.validateLink(c)||(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=i[0].length,0))))}},{}],38:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(t=c,c++,n=e.posMax;c<n&&96===e.src.charCodeAt(c);)c++;for(s=e.src.slice(t,c),o=i=c;-1!==(o=e.src.indexOf("`",i));){for(i=o+1;i<n&&96===e.src.charCodeAt(i);)i++;if(i-o===s.length)return r||((a=e.push("code_inline","code",0)).markup=s,a.content=e.src.slice(c,o).replace(/[ \n]+/g," ").trim()),e.pos=i,!0}return r||(e.pending+=s),e.pos+=s.length,!0}},{}],39:[function(e,r,t){"use strict";r.exports=function(e){var r,t,n,s,o=e.delimiters,i=e.delimiters.length;for(r=0;r<i;r++)if((n=o[r]).close)for(t=r-n.jump-1;t>=0;){if((s=o[t]).open&&s.marker===n.marker&&s.end<0&&s.level===n.level&&!((s.close||n.open)&&void 0!==s.length&&void 0!==n.length&&(s.length+n.length)%3==0)){n.jump=r-t,n.open=!1,s.end=r,s.jump=0;break}t-=s.jump+1}}},{}],40:[function(e,r,t){"use strict";r.exports.tokenize=function(e,r){var t,n,s=e.pos,o=e.src.charCodeAt(s);if(r)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),t=0;t<n.length;t++)e.push("text","",0).content=String.fromCharCode(o),e.delimiters.push({marker:o,length:n.length,jump:t,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},r.exports.postProcess=function(e){var r,t,n,s,o,i,a=e.delimiters;for(r=e.delimiters.length-1;r>=0;r--)95!==(t=a[r]).marker&&42!==t.marker||-1!==t.end&&(n=a[t.end],i=r>0&&a[r-1].end===t.end+1&&a[r-1].token===t.token-1&&a[t.end+1].token===n.token+1&&a[r-1].marker===t.marker,o=String.fromCharCode(t.marker),(s=e.tokens[t.token]).type=i?"strong_open":"em_open",s.tag=i?"strong":"em",s.nesting=1,s.markup=i?o+o:o,s.content="",(s=e.tokens[n.token]).type=i?"strong_close":"em_close",s.tag=i?"strong":"em",s.nesting=-1,s.markup=i?o+o:o,s.content="",i&&(e.tokens[a[r-1].token].content="",e.tokens[a[t.end+1].token].content="",r--))}},{}],41:[function(e,r,t){"use strict";var n=e("../common/entities"),s=e("../common/utils").has,o=e("../common/utils").isValidEntityCode,i=e("../common/utils").fromCodePoint,a=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;r.exports=function(e,r){var t,l,u=e.pos,p=e.posMax;if(38!==e.src.charCodeAt(u))return!1;if(u+1<p)if(35===e.src.charCodeAt(u+1)){if(l=e.src.slice(u).match(a))return r||(t="x"===l[1][0].toLowerCase()?parseInt(l[1].slice(1),16):parseInt(l[1],10),e.pending+=i(o(t)?t:65533)),e.pos+=l[0].length,!0}else if((l=e.src.slice(u).match(c))&&s(n,l[1]))return r||(e.pending+=n[l[1]]),e.pos+=l[0].length,!0;return r||(e.pending+="&"),e.pos++,!0}},{"../common/entities":1,"../common/utils":4}],42:[function(e,r,t){"use strict";for(var n=e("../common/utils").isSpace,s=[],o=0;o<256;o++)s.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){s[e.charCodeAt(0)]=1}),r.exports=function(e,r){var t,o=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(++o<i){if((t=e.src.charCodeAt(o))<256&&0!==s[t])return r||(e.pending+=e.src[o]),e.pos+=2,!0;if(10===t){for(r||e.push("hardbreak","br",0),o++;o<i&&(t=e.src.charCodeAt(o),n(t));)o++;return e.pos=o,!0}}return r||(e.pending+="\\"),e.pos++,!0}},{"../common/utils":4}],43:[function(e,r,t){"use strict";function n(e){var r=32|e;return r>=97&&r<=122}var s=e("../common/html_re").HTML_TAG_RE;r.exports=function(e,r){var t,o,i,a=e.pos;return!!e.md.options.html&&(i=e.posMax,!(60!==e.src.charCodeAt(a)||a+2>=i)&&(!(33!==(t=e.src.charCodeAt(a+1))&&63!==t&&47!==t&&!n(t))&&(!!(o=e.src.slice(a).match(s))&&(r||(e.push("html_inline","",0).content=e.src.slice(a,a+o[0].length)),e.pos+=o[0].length,!0))))}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f,d,m,_,g="",b=e.pos,k=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=c+1)<k&&40===e.src.charCodeAt(u)){for(u++;u<k&&(o=e.src.charCodeAt(u),s(o)||10===o);u++);if(u>=k)return!1;for(_=u,(h=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?u=h.pos:g=""),_=u;u<k&&(o=e.src.charCodeAt(u),s(o)||10===o);u++);if(h=e.md.helpers.parseLinkTitle(e.src,u,e.posMax),u<k&&_!==u&&h.ok)for(f=h.str,u=h.pos;u<k&&(o=e.src.charCodeAt(u),s(o)||10===o);u++);else f="";if(u>=k||41!==e.src.charCodeAt(u))return e.pos=b,!1;u++}else{if(void 0===e.env.references)return!1;if(u<k&&91===e.src.charCodeAt(u)?(_=u+1,(u=e.md.helpers.parseLinkLabel(e,u))>=0?a=e.src.slice(_,u++):u=c+1):u=c+1,a||(a=e.src.slice(l,c)),!(p=e.env.references[n(a)]))return e.pos=b,!1;g=p.href,f=p.title}return r||(i=e.src.slice(l,c),e.md.inline.parse(i,e.md,e.env,m=[]),(d=e.push("image","img",0)).attrs=t=[["src",g],["alt",""]],d.children=m,d.content=i,f&&t.push(["title",f])),e.pos=u,e.posMax=k,!0}},{"../common/utils":4}],45:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f="",d=e.pos,m=e.posMax,_=e.pos,g=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(a=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((l=a+1)<m&&40===e.src.charCodeAt(l)){for(g=!1,l++;l<m&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);if(l>=m)return!1;for(_=l,(u=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok&&(f=e.md.normalizeLink(u.str),e.md.validateLink(f)?l=u.pos:f=""),_=l;l<m&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);if(u=e.md.helpers.parseLinkTitle(e.src,l,e.posMax),l<m&&_!==l&&u.ok)for(h=u.str,l=u.pos;l<m&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);else h="";(l>=m||41!==e.src.charCodeAt(l))&&(g=!0),l++}if(g){if(void 0===e.env.references)return!1;if(l<m&&91===e.src.charCodeAt(l)?(_=l+1,(l=e.md.helpers.parseLinkLabel(e,l))>=0?i=e.src.slice(_,l++):l=a+1):l=a+1,i||(i=e.src.slice(c,a)),!(p=e.env.references[n(i)]))return e.pos=d,!1;f=p.href,h=p.title}return r||(e.pos=c,e.posMax=a,e.push("link_open","a",1).attrs=t=[["href",f]],h&&t.push(["title",h]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=l,e.posMax=m,!0}},{"../common/utils":4}],46:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r){var t,s,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;for(t=e.pending.length-1,s=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),o++;o<s&&n(e.src.charCodeAt(o));)o++;return e.pos=o,!0}},{"../common/utils":4}],47:[function(e,r,t){"use strict";function n(e,r,t,n){this.src=e,this.env=t,this.md=r,this.tokens=n,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[]}var s=e("../token"),o=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,a=e("../common/utils").isMdAsciiPunct;n.prototype.pushPending=function(){var e=new s("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},n.prototype.push=function(e,r,t){this.pending&&this.pushPending();var n=new s(e,r,t);return t<0&&this.level--,n.level=this.level,t>0&&this.level++,this.pendingLevel=this.level,this.tokens.push(n),n},n.prototype.scanDelims=function(e,r){var t,n,s,c,l,u,p,h,f,d=e,m=!0,_=!0,g=this.posMax,b=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;d<g&&this.src.charCodeAt(d)===b;)d++;return s=d-e,n=d<g?this.src.charCodeAt(d):32,p=a(t)||i(String.fromCharCode(t)),f=a(n)||i(String.fromCharCode(n)),u=o(t),(h=o(n))?m=!1:f&&(u||p||(m=!1)),u?_=!1:p&&(h||f||(_=!1)),r?(c=m,l=_):(c=m&&(!_||p),l=_&&(!m||f)),{can_open:c,can_close:l,length:s}},n.prototype.Token=s,r.exports=n},{"../common/utils":4,"../token":51}],48:[function(e,r,t){"use strict";r.exports.tokenize=function(e,r){var t,n,s,o,i=e.pos,a=e.src.charCodeAt(i);if(r)return!1;if(126!==a)return!1;if(n=e.scanDelims(e.pos,!0),s=n.length,o=String.fromCharCode(a),s<2)return!1;for(s%2&&(e.push("text","",0).content=o,s--),t=0;t<s;t+=2)e.push("text","",0).content=o+o,e.delimiters.push({marker:a,jump:t,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},r.exports.postProcess=function(e){var r,t,n,s,o,i=[],a=e.delimiters,c=e.delimiters.length;for(r=0;r<c;r++)126===(n=a[r]).marker&&-1!==n.end&&(s=a[n.end],(o=e.tokens[n.token]).type="s_open",o.tag="s",o.nesting=1,o.markup="~~",o.content="",(o=e.tokens[s.token]).type="s_close",o.tag="s",o.nesting=-1,o.markup="~~",o.content="","text"===e.tokens[s.token-1].type&&"~"===e.tokens[s.token-1].content&&i.push(s.token-1));for(;i.length;){for(t=(r=i.pop())+1;t<e.tokens.length&&"s_close"===e.tokens[t].type;)t++;r!==--t&&(o=e.tokens[t],e.tokens[t]=e.tokens[r],e.tokens[r]=o)}}},{}],49:[function(e,r,t){"use strict";function n(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}r.exports=function(e,r){for(var t=e.pos;t<e.posMax&&!n(e.src.charCodeAt(t));)t++;return t!==e.pos&&(r||(e.pending+=e.src.slice(e.pos,t)),e.pos=t,!0)}},{}],50:[function(e,r,t){"use strict";r.exports=function(e){var r,t,n=0,s=e.tokens,o=e.tokens.length;for(r=t=0;r<o;r++)n+=s[r].nesting,s[r].level=n,"text"===s[r].type&&r+1<o&&"text"===s[r+1].type?s[r+1].content=s[r].content+s[r+1].content:(r!==t&&(s[t]=s[r]),t++);r!==t&&(s.length=t)}},{}],51:[function(e,r,t){"use strict";function n(e,r,t){this.type=e,this.tag=r,this.attrs=null,this.map=null,this.nesting=t,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}n.prototype.attrIndex=function(e){var r,t,n;if(!this.attrs)return-1;for(t=0,n=(r=this.attrs).length;t<n;t++)if(r[t][0]===e)return t;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},n.prototype.attrSet=function(e,r){var t=this.attrIndex(e),n=[e,r];t<0?this.attrPush(n):this.attrs[t]=n},n.prototype.attrGet=function(e){var r=this.attrIndex(e),t=null;return r>=0&&(t=this.attrs[r][1]),t},n.prototype.attrJoin=function(e,r){var t=this.attrIndex(e);t<0?this.attrPush([e,r]):this.attrs[t][1]=this.attrs[t][1]+" "+r},r.exports=n},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",awconint:"\u2233",awint:"\u2a11",backcong:"\u224c",backepsilon:"\u03f6",backprime:"\u2035",backsim:"\u223d",backsimeq:"\u22cd",Backslash:"\u2216",Barv:"\u2ae7",barvee:"\u22bd",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23b5",bbrktbrk:"\u23b6",bcong:"\u224c",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201e",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29b0",bepsi:"\u03f6",bernou:"\u212c",Bernoullis:"\u212c",Beta:"\u0392",beta:"\u03b2",beth:"\u2136",between:"\u226c",Bfr:"\ud835\udd05",bfr:"\ud835\udd1f",bigcap:"\u22c2",bigcirc:"\u25ef",bigcup:"\u22c3",bigodot:"\u2a00",bigoplus:"\u2a01",bigotimes:"\u2a02",bigsqcup:"\u2a06",bigstar:"\u2605",bigtriangledown:"\u25bd",bigtriangleup:"\u25b3",biguplus:"\u2a04",bigvee:"\u22c1",bigwedge:"\u22c0",bkarow:"\u290d",blacklozenge:"\u29eb",blacksquare:"\u25aa",blacktriangle:"\u25b4",blacktriangledown:"\u25be",blacktriangleleft:"\u25c2",blacktriangleright:"\u25b8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20e5",bnequiv:"\u2261\u20e5",bNot:"\u2aed",bnot:"\u2310",Bopf:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",capcup:"\u2a47",capdot:"\u2a40",CapitalDifferentialD:"\u2145",caps:"\u2229\ufe00",caret:"\u2041",caron:"\u02c7",Cayleys:"\u212d",ccaps:"\u2a4d",Ccaron:"\u010c",ccaron:"\u010d",Ccedil:"\xc7",ccedil:"\xe7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",circeq:"\u2257",circlearrowleft:"\u21ba",circlearrowright:"\u21bb",circledast:"\u229b",circledcirc:"\u229a",circleddash:"\u229d",CircleDot:"\u2299",circledR:"\xae",circledS:"\u24c8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",dHar:"\u2965",dharl:"\u21c3",dharr:"\u21c2",DiacriticalAcute:"\xb4",DiacriticalDot:"\u02d9",DiacriticalDoubleAcute:"\u02dd",DiacriticalGrave:"`",DiacriticalTilde:"\u02dc",diam:"\u22c4",diamond:"\u22c4",Diamond:"\u22c4",diamondsuit:"\u2666",diams:"\u2666",die:"\xa8",DifferentialD:"\u2146",digamma:"\u03dd",disin:"\u22f2",div:"\xf7",divide:"\xf7",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",Dot:"\xa8",dot:"\u02d9",DotDot:"\u20dc",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22a1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222f",DoubleDot:"\xa8",DoubleDownArrow:"\u21d3",DoubleLeftArrow:"\u21d0",DoubleLeftRightArrow:"\u21d4",DoubleLeftTee:"\u2ae4",DoubleLongLeftArrow:"\u27f8",DoubleLongLeftRightArrow:"\u27fa",DoubleLongRightArrow:"\u27f9",DoubleRightArrow:"\u21d2",DoubleRightTee:"\u22a8",DoubleUpArrow:"\u21d1",DoubleUpDownArrow:"\u21d5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",DScy:"\u0405",dscy:"\u0455",dsol:"\u29f6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22f1",dtri:"\u25bf",dtrif:"\u25be",duarr:"\u21f5",duhar:"\u296f",dwangle:"\u29a6",DZcy:"\u040f",dzcy:"\u045f",dzigrarr:"\u27ff",Eacute:"\xc9",eacute:"\xe9",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",Egrave:"\xc8",egrave:"\xe8",egs:"\u2a96",egsdot:"\u2a98",el:"\u2a99",Element:"\u2208",elinters:"\u23e7",ell:"\u2113",els:"\u2a95",elsdot:"\u2a97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25fb",emptyv:"\u2205",EmptyVerySmallSquare:"\u25ab",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014a",eng:"\u014b",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\ud835\udd3c",eopf:"\ud835\udd56",epar:"\u22d5",eparsl:"\u29e3",eplus:"\u2a71",epsi:"\u03b5",Epsilon:"\u0395",epsilon:"\u03b5",epsiv:"\u03f5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2a96",eqslantless:"\u2a95",Equal:"\u2a75",equals:"=",EqualTilde:"\u2242",equest:"\u225f",Equilibrium:"\u21cc",equiv:"\u2261",equivDD:"\u2a78",eqvparsl:"\u29e5",erarr:"\u2971",erDot:"\u2253",escr:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\ufb03",fflig:"\ufb00",ffllig:"\ufb04",Ffr:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",gacute:"\u01f5",Gamma:"\u0393",gamma:"\u03b3",Gammad:"\u03dc",gammad:"\u03dd",gap:"\u2a86",Gbreve:"\u011e",gbreve:"\u011f",Gcedil:"\u0122",Gcirc:"\u011c",gcirc:"\u011d",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",gtdot:"\u22d7",gtlPar:"\u2995",gtquest:"\u2a7c",gtrapprox:"\u2a86",gtrarr:"\u2978",gtrdot:"\u22d7",gtreqless:"\u22db",gtreqqless:"\u2a8c",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\ufe00",gvnE:"\u2269\ufe00",Hacek:"\u02c7",hairsp:"\u200a",half:"\xbd",hamilt:"\u210b",HARDcy:"\u042a",hardcy:"\u044a",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105",in:"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba",int:"\u222b",Int:"\u222c",integers:"\u2124",Integral:"\u222b",intercal:"\u22ba",Intersection:"\u22c2",intlarhk:"\u2a17",intprod:"\u2a3c",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012e",iogon:"\u012f",Iopf:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",isin:"\u2208",isindot:"\u22f5",isinE:"\u22f9",isins:"\u22f4",isinsv:"\u22f3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xcf",iuml:"\xef",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298b",lbrksld:"\u298f",lbrkslu:"\u298d",Lcaron:"\u013d",lcaron:"\u013e",Lcedil:"\u013b",lcedil:"\u013c",lceil:"\u2308",lcub:"{",Lcy:"\u041b",lcy:"\u043b",ldca:"\u2936",ldquo:"\u201c",ldquor:"\u201e",ldrdhar:"\u2967",ldrushar:"\u294b",ldsh:"\u21b2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",lesdot:"\u2a7f",lesdoto:"\u2a81",lesdotor:"\u2a83",lesg:"\u22da\ufe00",lesges:"\u2a93",lessapprox:"\u2a85",lessdot:"\u22d6",lesseqgtr:"\u22da",lesseqqgtr:"\u2a8b",LessEqualGreater:"\u22da",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2aa1",lesssim:"\u2272",LessSlantEqual:"\u2a7d",LessTilde:"\u2272",lfisht:"\u297c",lfloor:"\u230a",Lfr:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",loplus:"\u2a2d",lotimes:"\u2a34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25ca",lozenge:"\u25ca",lozf:"\u29eb",lpar:"(",lparlt:"\u2993",lrarr:"\u21c6",lrcorner:"\u231f",lrhar:"\u21cb",lrhard:"\u296d",lrm:"\u200e",lrtri:"\u22bf",lsaquo:"\u2039",lscr:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",ltdot:"\u22d6",lthree:"\u22cb",ltimes:"\u22c9",ltlarr:"\u2976",ltquest:"\u2a7b",ltri:"\u25c3",ltrie:"\u22b4",ltrif:"\u25c2",ltrPar:"\u2996",lurdshar:"\u294a",luruhar:"\u2966",lvertneqq:"\u2268\ufe00",lvnE:"\u2268\ufe00",macr:"\xaf",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21a6",mapsto:"\u21a6",mapstodown:"\u21a7",mapstoleft:"\u21a4",mapstoup:"\u21a5",marker:"\u25ae",mcomma:"\u2a29",Mcy:"\u041c",mcy:"\u043c",mdash:"\u2014",mDDot:"\u223a",measuredangle:"\u2221",MediumSpace:"\u205f",Mellintrf:"\u2133",Mfr:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",mstpos:"\u223e",Mu:"\u039c",mu:"\u03bc",multimap:"\u22b8",mumap:"\u22b8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20d2",nap:"\u2249",napE:"\u2a70\u0338",napid:"\u224b\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266e",naturals:"\u2115",natur:"\u266e",nbsp:"\xa0",nbump:"\u224e\u0338",nbumpe:"\u224f\u0338",ncap:"\u2a43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2a6d\u0338",ncup:"\u2a42",Ncy:"\u041d",ncy:"\u043d",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200b",NegativeThickSpace:"\u200b",NegativeThinSpace:"\u200b",NegativeVeryThinSpace:"\u200b",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226b",NestedLessLess:"\u226a",NewLine:"\n",nexist:"\u2204",nexists:"\u2204",Nfr:"\ud835\udd11",nfr:"\ud835\udd2b",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2a7e\u0338",nges:"\u2a7e\u0338",nGg:"\u22d9\u0338",ngsim:"\u2275",nGt:"\u226b\u20d2",ngt:"\u226f",ngtr:"\u226f",nGtv:"\u226b\u0338",nharr:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2a7d\u0338",nles:"\u2a7d\u0338",nless:"\u226e",nLl:"\u22d8\u0338",nlsim:"\u2274",nLt:"\u226a\u20d2",nlt:"\u226e",nltri:"\u22ea",nltrie:"\u22ec",nLtv:"\u226a\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xa0",nopf:"\ud835\udd5f",Nopf:"\u2115",Not:"\u2aec",not:"\xac",NotCongruent:"\u2262",NotCupCap:"\u226d",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226f",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226b\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2a7e\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224e\u0338",NotHumpEqual:"\u224f\u0338",notin:"\u2209",notindot:"\u22f5\u0338",notinE:"\u22f9\u0338",notinva:"\u2209",notinvb:"\u22f7",notinvc:"\u22f6",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",NotLeftTriangleEqual:"\u22ec",NotLess:"\u226e",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226a\u0338",NotLessSlantEqual:"\u2a7d\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2aa2\u0338",NotNestedLessLess:"\u2aa1\u0338",notni:"\u220c",notniva:"\u220c",notnivb:"\u22fe",notnivc:"\u22fd",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2aaf\u0338",NotPrecedesSlantEqual:"\u22e0",NotReverseElement:"\u220c",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",NotRightTriangleEqual:"\u22ed",NotSquareSubset:"\u228f\u0338",NotSquareSubsetEqual:"\u22e2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22e3",NotSubset:"\u2282\u20d2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2ab0\u0338",NotSucceedsSlantEqual:"\u22e1",NotSucceedsTilde:"\u227f\u0338",NotSuperset:"\u2283\u20d2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22e2",nsqsupe:"\u22e3",nsub:"\u2284",nsubE:"\u2ac5\u0338",nsube:"\u2288",nsubset:"\u2282\u20d2",nsubseteq:"\u2288",nsubseteqq:"\u2ac5\u0338",nsucc:"\u2281",nsucceq:"\u2ab0\u0338",nsup:"\u2285",nsupE:"\u2ac6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20d2",nsupseteq:"\u2289",nsupseteqq:"\u2ac6\u0338",ntgl:"\u2279",Ntilde:"\xd1",ntilde:"\xf1",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",nvge:"\u2265\u20d2",nvgt:">\u20d2",nvHarr:"\u2904",nvinfin:"\u29de",nvlArr:"\u2902",nvle:"\u2264\u20d2",nvlt:"<\u20d2",nvltrie:"\u22b4\u20d2",nvrArr:"\u2903",nvrtrie:"\u22b5\u20d2",nvsim:"\u223c\u20d2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",Ograve:"\xd2",ograve:"\xf2",ogt:"\u29c1",ohbar:"\u29b5",ohm:"\u03a9",oint:"\u222e",olarr:"\u21ba",olcir:"\u29be",olcross:"\u29bb",oline:"\u203e",olt:"\u29c0",Omacr:"\u014c",omacr:"\u014d",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",omid:"\u29b6",ominus:"\u2296",Oopf:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298c",rbrksld:"\u298e",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201d",rdquor:"\u201d",rdsh:"\u21b3",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",rsh:"\u21b1",Rsh:"\u21b1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22cc",rtimes:"\u22ca",rtri:"\u25b9",rtrie:"\u22b5",rtrif:"\u25b8",rtriltri:"\u29ce",RuleDelayed:"\u29f4",ruluhar:"\u2968",rx:"\u211e",Sacute:"\u015a",sacute:"\u015b",sbquo:"\u201a",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",sfrown:"\u2322",sharp:"\u266f",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sigmav:"\u03c2",sim:"\u223c",simdot:"\u2a6a",sime:"\u2243",simeq:"\u2243",simg:"\u2a9e",simgE:"\u2aa0",siml:"\u2a9d",simlE:"\u2a9f",simne:"\u2246",simplus:"\u2a24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2a33",smeparsl:"\u29e4",smid:"\u2223",smile:"\u2323",smt:"\u2aaa",smte:"\u2aac",smtes:"\u2aac\ufe00",SOFTcy:"\u042c",softcy:"\u044c",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\ufe00",sqcup:"\u2294",sqcups:"\u2294\ufe00",Sqrt:"\u221a",sqsub:"\u228f",sqsube:"\u2291",sqsubset:"\u228f",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",succcurlyeq:"\u227d",Succeeds:"\u227b",SucceedsEqual:"\u2ab0",SucceedsSlantEqual:"\u227d",SucceedsTilde:"\u227f",succeq:"\u2ab0",succnapprox:"\u2aba",succneqq:"\u2ab6",succnsim:"\u22e9",succsim:"\u227f",SuchThat:"\u220b",sum:"\u2211",Sum:"\u2211",sung:"\u266a",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",supdot:"\u2abe",supdsub:"\u2ad8",supE:"\u2ac6",supe:"\u2287",supedot:"\u2ac4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27c9",suphsub:"\u2ad7",suplarr:"\u297b",supmult:"\u2ac2",supnE:"\u2acc",supne:"\u228b",supplus:"\u2ac0",supset:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:"\t",target:"\u2316",Tau:"\u03a4",tau:"\u03c4",tbrk:"\u23b4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20db",telrec:"\u2315",Tfr:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",topfork:"\u2ada",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25b5",triangledown:"\u25bf",triangleleft:"\u25c3",trianglelefteq:"\u22b4",triangleq:"\u225c",triangleright:"\u25b9",trianglerighteq:"\u22b5",tridot:"\u25ec",trie:"\u225c",triminus:"\u2a3a",TripleDot:"\u20db",triplus:"\u2a39",trisb:"\u29cd",tritime:"\u2a3b",trpezium:"\u23e2",Tscr:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",Ugrave:"\xd9",ugrave:"\xf9",uHar:"\u2963",uharl:"\u21bf",uharr:"\u21be",uhblk:"\u2580",ulcorn:"\u231c",ulcorner:"\u231c",ulcrop:"\u230f",ultri:"\u25f8",Umacr:"\u016a",umacr:"\u016b",uml:"\xa8",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017a",Zcaron:"\u017d",zcaron:"\u017e",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017b",zdot:"\u017c",zeetrf:"\u2128",ZeroWidthSpace:"\u200b",Zeta:"\u0396",zeta:"\u03b6",zfr:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){return Array.prototype.slice.call(arguments,1).forEach(function(r){r&&Object.keys(r).forEach(function(t){e[t]=r[t]})}),e}function s(e){return Object.prototype.toString.call(e)}function o(e){return"[object String]"===s(e)}function i(e){return"[object Object]"===s(e)}function a(e){return"[object RegExp]"===s(e)}function c(e){return"[object Function]"===s(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function u(e){return Object.keys(e||{}).reduce(function(e,r){return e||b.hasOwnProperty(r)},!1)}function p(e){e.__index__=-1,e.__text_cache__=""}function h(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}function f(){return function(e,r){r.normalize(e)}}function d(r){function t(e){return e.replace("%TLDS%",s.src_tlds)}function n(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}var s=r.re=e("./lib/re")(r.__opts__),u=r.__tlds__.slice();r.onCompile(),r.__tlds_replaced__||u.push(v),u.push(s.src_xn),s.src_tlds=u.join("|"),s.email_fuzzy=RegExp(t(s.tpl_email_fuzzy),"i"),s.link_fuzzy=RegExp(t(s.tpl_link_fuzzy),"i"),s.link_no_ip_fuzzy=RegExp(t(s.tpl_link_no_ip_fuzzy),"i"),s.host_fuzzy_test=RegExp(t(s.tpl_host_fuzzy_test),"i");var d=[];r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var s={validate:null,link:null};if(r.__compiled__[e]=s,i(t))return a(t.validate)?s.validate=h(t.validate):c(t.validate)?s.validate=t.validate:n(e,t),void(c(t.normalize)?s.normalize=t.normalize:t.normalize?n(e,t):s.normalize=f());o(t)?d.push(e):n(e,t)}}),d.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[""]={validate:null,normalize:f()};var m=Object.keys(r.__compiled__).filter(function(e){return e.length>0&&r.__compiled__[e]}).map(l).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+s.src_ZPCc+"))("+m+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+s.src_ZPCc+"))("+m+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),p(r)}function m(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function _(e,r){var t=new m(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function g(e,r){if(!(this instanceof g))return new g(e,r);r||u(e)&&(r=e,e={}),this.__opts__=n({},b,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},k,e),this.__compiled__={},this.__tlds__=x,this.__tlds_replaced__=!1,this.re={},d(this)}var b={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1},k={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:r>=3&&"/"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},v="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",x="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");g.prototype.add=function(e,r){return this.__schemas__[e]=r,d(this),this},g.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},g.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c<this.__index__)&&null!==(t=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(o=t.index+t[1].length,(this.__index__<0||o<this.__index__)&&(this.__schema__="",this.__index__=o,this.__last_index__=t.index+t[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&e.indexOf("@")>=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||o<this.__index__||o===this.__index__&&i>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),this.__index__>=0},g.prototype.pretest=function(e){return this.re.pretest.test(e)},g.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},g.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(_(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(_(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},g.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,r,t){return e!==t[r-1]}).reverse(),d(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,d(this),this)},g.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},g.prototype.onCompile=function(){},r.exports=g},{"./lib/re":54}],54:[function(e,r,t){"use strict";r.exports=function(r){var t={};t.src_Any=e("uc.micro/properties/Any/regex").source,t.src_Cc=e("uc.micro/categories/Cc/regex").source,t.src_Z=e("uc.micro/categories/Z/regex").source,t.src_P=e("uc.micro/categories/P/regex").source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><\uff5c]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(r&&r["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-(?!-)|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|[><\uff5c]|\\(|"+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},{"uc.micro/categories/Cc/regex":61,"uc.micro/categories/P/regex":63,"uc.micro/categories/Z/regex":64,"uc.micro/properties/Any/regex":66}],55:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),n.push(t);for(r=0;r<e.length;r++)n[t=e.charCodeAt(r)]="%"+("0"+t.toString(16).toUpperCase()).slice(-2);return n}function s(e,r){var t;return"string"!=typeof r&&(r=s.defaultChars),t=n(r),e.replace(/(%[a-f0-9]{2})+/gi,function(e){var r,n,s,o,i,a,c,l="";for(r=0,n=e.length;r<n;r+=3)(s=parseInt(e.slice(r+1,r+3),16))<128?l+=t[s]:192==(224&s)&&r+3<n&&128==(192&(o=parseInt(e.slice(r+4,r+6),16)))?(l+=(c=s<<6&1984|63&o)<128?"\ufffd\ufffd":String.fromCharCode(c),r+=3):224==(240&s)&&r+6<n&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),128==(192&o)&&128==(192&i))?(l+=(c=s<<12&61440|o<<6&4032|63&i)<2048||c>=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240==(248&s)&&r+9<n&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),a=parseInt(e.slice(r+10,r+12),16),128==(192&o)&&128==(192&i)&&128==(192&a))?((c=s<<18&1835008|o<<12&258048|i<<6&4032|63&a)<65536||c>1114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l})}var o={};s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?n.push(t):n.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r<e.length;r++)n[e.charCodeAt(r)]=e[r];return n}function s(e,r,t){var o,i,a,c,l,u="";for("string"!=typeof r&&(t=r,r=s.defaultChars),void 0===t&&(t=!0),l=n(r),o=0,i=e.length;o<i;o++)if(a=e.charCodeAt(o),t&&37===a&&o+2<i&&/^[0-9a-f]{2}$/i.test(e.slice(o+1,o+3)))u+=e.slice(o,o+3),o+=2;else if(a<128)u+=l[a];else if(a>=55296&&a<=57343){if(a>=55296&&a<=56319&&o+1<i&&(c=e.charCodeAt(o+1))>=56320&&c<=57343){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}var o={};s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?r+="["+e.hostname+"]":r+=e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,a=["<",">",'"',"`"," ","\r","\n","\t"],c=["{","}","|","\\","^","`"].concat(a),l=["'"].concat(c),u=["%","/","?",";","#"].concat(l),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,o,a,c,l=e;if(l=l.trim(),!r&&1===e.split("#").length){var _=i.exec(l);if(_)return this.pathname=_[1],_[2]&&(this.search=_[2]),this}var g=s.exec(l);if(g&&(o=(g=g[0]).toLowerCase(),this.protocol=g,l=l.substr(g.length)),(r||g||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===l.substr(0,2))||g&&d[g]||(l=l.substr(2),this.slashes=!0)),!d[g]&&(c||g&&!m[g])){var b=-1;for(t=0;t<p.length;t++)-1!==(a=l.indexOf(p[t]))&&(-1===b||a<b)&&(b=a);var k,v;for(-1!==(v=-1===b?l.lastIndexOf("@"):l.lastIndexOf("@",b))&&(k=l.slice(0,v),l=l.slice(v+1),this.auth=k),b=-1,t=0;t<u.length;t++)-1!==(a=l.indexOf(u[t]))&&(-1===b||a<b)&&(b=a);-1===b&&(b=l.length),":"===l[b-1]&&b--;var x=l.slice(0,b);l=l.slice(b),this.parseHost(x),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y){var C=this.hostname.split(/\./);for(t=0,n=C.length;t<n;t++){var A=C[t];if(A&&!A.match(h)){for(var w="",D=0,q=A.length;D<q;D++)A.charCodeAt(D)>127?w+="x":w+=A[D];if(!w.match(h)){var E=C.slice(0,t),S=C.slice(t+1),F=A.match(f);F&&(E.push(F[1]),S.unshift(F[2])),S.length&&(l=S.join(".")+l),this.hostname=E.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=l.indexOf("#");-1!==L&&(this.hash=l.substr(L),l=l.slice(0,L));var z=l.indexOf("?");return-1!==z&&(this.search=l.substr(z),l=l.slice(0,z)),l&&(this.pathname=l),m[o]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=o.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=function(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}},{}],60:[function(e,r,t){(function(e){!function(n){function s(e){throw new RangeError(L[e])}function o(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function i(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),n+o((e=e.replace(F,".")).split("."),r).join(".")}function a(e){for(var r,t,n=[],s=0,o=e.length;s<o;)(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<o?56320==(64512&(t=e.charCodeAt(s++)))?n.push(((1023&r)<<10)+(1023&t)+65536):(n.push(r),s--):n.push(r);return n}function c(e){return o(e,function(e){var r="";return e>65535&&(r+=I((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=I(e)}).join("")}function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:v}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function p(e,r,t){var n=0;for(e=t?T(e/A):e>>1,e+=T(e/r);e>z*y>>1;n+=v)e=T(e/z);return T(n+(z+1)*e/(e+C))}function h(e){var r,t,n,o,i,a,u,h,f,d,m=[],_=e.length,g=0,b=D,C=w;for((t=e.lastIndexOf(q))<0&&(t=0),n=0;n<t;++n)e.charCodeAt(n)>=128&&s("not-basic"),m.push(e.charCodeAt(n));for(o=t>0?t+1:0;o<_;){for(i=g,a=1,u=v;o>=_&&s("invalid-input"),((h=l(e.charCodeAt(o++)))>=v||h>T((k-g)/a))&&s("overflow"),g+=h*a,f=u<=C?x:u>=C+y?y:u-C,!(h<f);u+=v)a>T(k/(d=v-f))&&s("overflow"),a*=d;C=p(g-i,r=m.length+1,0==i),T(g/r)>k-b&&s("overflow"),b+=T(g/r),g%=r,m.splice(g++,0,b)}return c(m)}function f(e){var r,t,n,o,i,c,l,h,f,d,m,_,g,b,C,A=[];for(_=(e=a(e)).length,r=D,t=0,i=w,c=0;c<_;++c)(m=e[c])<128&&A.push(I(m));for(n=o=A.length,o&&A.push(q);n<_;){for(l=k,c=0;c<_;++c)(m=e[c])>=r&&m<l&&(l=m);for(l-r>T((k-t)/(g=n+1))&&s("overflow"),t+=(l-r)*g,r=l,c=0;c<_;++c)if((m=e[c])<r&&++t>k&&s("overflow"),m==r){for(h=t,f=v;d=f<=i?x:f>=i+y?y:f-i,!(h<d);f+=v)C=h-d,b=v-d,A.push(I(u(d+C%b,0))),h=T(C/b);A.push(I(u(h,0))),i=p(t,g,n==o),t=0,++n}++t,++r}return A.join("")}var d="object"==typeof t&&t&&!t.nodeType&&t,m="object"==typeof r&&r&&!r.nodeType&&r,_="object"==typeof e&&e;_.global!==_&&_.window!==_&&_.self!==_||(n=_);var g,b,k=2147483647,v=36,x=1,y=26,C=38,A=700,w=72,D=128,q="-",E=/^xn--/,S=/[^\x20-\x7E]/,F=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},z=v-x,T=Math.floor,I=String.fromCharCode;if(g={version:"1.4.1",ucs2:{decode:a,encode:c},decode:h,encode:f,toASCII:function(e){return i(e,function(e){return S.test(e)?"xn--"+f(e):e})},toUnicode:function(e){return i(e,function(e){return E.test(e)?h(e.slice(4).toLowerCase()):e})}},d&&m)if(r.exports==d)m.exports=g;else for(b in g)g.hasOwnProperty(b)&&(d[b]=g[b]);else n.punycode=g}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],61:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],62:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],63:[function(e,r,t){r.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E44\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},{}],64:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/},{}],65:[function(e,r,t){"use strict";t.Any=e("./properties/Any/regex"),t.Cc=e("./categories/Cc/regex"),t.Cf=e("./categories/Cf/regex"),t.P=e("./categories/P/regex"),t.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,r,t){r.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},{}],67:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)});
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "markdown-it",
3
+ "version": "8.4.0",
4
+ "description": "Markdown-it - modern pluggable markdown parser.",
5
+ "keywords": [
6
+ "markdown",
7
+ "parser",
8
+ "commonmark",
9
+ "markdown-it",
10
+ "markdown-it-plugin"
11
+ ],
12
+ "repository": "markdown-it/markdown-it",
13
+ "license": "MIT",
14
+ "main": "index.js",
15
+ "bin": {
16
+ "markdown-it": "bin/markdown-it.js"
17
+ },
18
+ "scripts": {
19
+ "test": "make test",
20
+ "heroku-postbuild": "npm install express"
21
+ },
22
+ "files": [
23
+ "index.js",
24
+ "bin/",
25
+ "lib/",
26
+ "dist/"
27
+ ],
28
+ "dependencies": {
29
+ "argparse": "^1.0.7",
30
+ "entities": "~1.1.1",
31
+ "linkify-it": "^2.0.0",
32
+ "mdurl": "^1.0.1",
33
+ "uc.micro": "^1.0.3"
34
+ },
35
+ "devDependencies": {
36
+ "ansi": "^0.3.0",
37
+ "autoprefixer-stylus": "^0.11.0",
38
+ "benchmark": "~2.1.0",
39
+ "browserify": "*",
40
+ "chai": "^3.4.1",
41
+ "coveralls": "~2.11.9",
42
+ "eslint": "^3.5.0",
43
+ "express": "^4.14.0",
44
+ "highlight.js": "^9.2.0",
45
+ "istanbul": "^0.4.5",
46
+ "jade": "~1.11.0",
47
+ "markdown-it-abbr": "^1.0.4",
48
+ "markdown-it-container": "^2.0.0",
49
+ "markdown-it-deflist": "^2.0.0",
50
+ "markdown-it-emoji": "^1.1.1",
51
+ "markdown-it-footnote": "^3.0.1",
52
+ "markdown-it-for-inline": "~0.1.0",
53
+ "markdown-it-ins": "^2.0.0",
54
+ "markdown-it-mark": "^2.0.0",
55
+ "markdown-it-sub": "^1.0.0",
56
+ "markdown-it-sup": "^1.0.0",
57
+ "markdown-it-testgen": "~0.1.3",
58
+ "mocha": "*",
59
+ "ndoc": "^5.0.0",
60
+ "stylus": "~0.54.2",
61
+ "supertest": "^3.0.0",
62
+ "uglify-js": "^3.0.18"
63
+ }
64
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "plantuml-encoder",
3
+ "main": "dist/plantuml-encoder.js",
4
+ "version": "1.2.5",
5
+ "homepage": "https://github.com/markushedvall/plantuml-encoder",
6
+ "authors": [
7
+ "Markus Hedvall <mackanhedvall@gmail.com>"
8
+ ],
9
+ "description": "PlantUML encoder, works in browser & node.js",
10
+ "license": "MIT",
11
+ "ignore": [
12
+ "**/.*",
13
+ "node_modules",
14
+ "bower_components",
15
+ "test",
16
+ "tests",
17
+ "lib",
18
+ "index.js"
19
+ ],
20
+ "_release": "1.2.5",
21
+ "_resolution": {
22
+ "type": "version",
23
+ "tag": "v1.2.5",
24
+ "commit": "1c9d04c3764b18150de6e1f864c470beeb40140e"
25
+ },
26
+ "_source": "https://github.com/markushedvall/plantuml-encoder.git",
27
+ "_target": "^1.2.5",
28
+ "_originalSource": "plantuml-encoder"
29
+ }
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2015 by Markus Hedvall
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,38 @@
1
+ # plantuml-encoder
2
+ PlantUML encoder for browsers and Node.js.
3
+
4
+ [![npm Version](https://img.shields.io/npm/v/plantuml-encoder.svg)](https://www.npmjs.com/package/plantuml-encoder) [![build-status](https://travis-ci.org/markushedvall/plantuml-encoder.svg?branch=master)](https://travis-ci.org/markushedvall/plantuml-encoder) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard)
5
+
6
+ Encoded PlantUML can be used to create PlantUML URL links.
7
+
8
+ # Install
9
+
10
+ Node.js:
11
+
12
+ ```
13
+ npm install plantuml-encoder
14
+ ```
15
+
16
+ browser:
17
+
18
+ ```
19
+ bower install plantuml-encoder
20
+ ```
21
+
22
+ # Example
23
+
24
+ ```javascript
25
+ var plantumlEncoder = require('plantuml-encoder')
26
+
27
+ var encoded = plantumlEncoder.encode('A -> B: Hello')
28
+ console.log(encoded) // SrJGjLDmibBmICt9oGS0
29
+
30
+ var url = 'http://www.plantuml.com/plantuml/img/' + encoded
31
+ ```
32
+
33
+ The URL can then be used to display the diagram:
34
+
35
+ ![alt tag](http://www.plantuml.com/plantuml/img/SrJGjLDmibBmICt9oGS0)
36
+
37
+ # License
38
+ MIT
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "plantuml-encoder",
3
+ "main": "dist/plantuml-encoder.js",
4
+ "version": "1.2.4",
5
+ "homepage": "https://github.com/markushedvall/plantuml-encoder",
6
+ "authors": [
7
+ "Markus Hedvall <mackanhedvall@gmail.com>"
8
+ ],
9
+ "description": "PlantUML encoder, works in browser & node.js",
10
+ "license": "MIT",
11
+ "ignore": [
12
+ "**/.*",
13
+ "node_modules",
14
+ "bower_components",
15
+ "test",
16
+ "tests",
17
+ "lib",
18
+ "index.js"
19
+ ]
20
+ }
@@ -0,0 +1,3994 @@
1
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.plantumlEncoder = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
+ module.exports = require('./lib/plantuml-encoder')
3
+
4
+ },{"./lib/plantuml-encoder":3}],2:[function(require,module,exports){
5
+ 'use strict'
6
+
7
+ // Encode code taken from the PlantUML website:
8
+ // http://plantuml.sourceforge.net/codejavascript2.html
9
+
10
+ // It is described as being "a transformation close to base64"
11
+ // The code has been slightly modified to pass linters
12
+
13
+ function encode6bit (b) {
14
+ if (b < 10) {
15
+ return String.fromCharCode(48 + b)
16
+ }
17
+ b -= 10
18
+ if (b < 26) {
19
+ return String.fromCharCode(65 + b)
20
+ }
21
+ b -= 26
22
+ if (b < 26) {
23
+ return String.fromCharCode(97 + b)
24
+ }
25
+ b -= 26
26
+ if (b === 0) {
27
+ return '-'
28
+ }
29
+ if (b === 1) {
30
+ return '_'
31
+ }
32
+ return '?'
33
+ }
34
+
35
+ function append3bytes (b1, b2, b3) {
36
+ var c1 = b1 >> 2
37
+ var c2 = ((b1 & 0x3) << 4) | (b2 >> 4)
38
+ var c3 = ((b2 & 0xF) << 2) | (b3 >> 6)
39
+ var c4 = b3 & 0x3F
40
+ var r = ''
41
+ r += encode6bit(c1 & 0x3F)
42
+ r += encode6bit(c2 & 0x3F)
43
+ r += encode6bit(c3 & 0x3F)
44
+ r += encode6bit(c4 & 0x3F)
45
+ return r
46
+ }
47
+
48
+ module.exports.encode = function (data) {
49
+ var r = ''
50
+ for (var i = 0; i < data.length; i += 3) {
51
+ if (i + 2 === data.length) {
52
+ r += append3bytes(data.charCodeAt(i), data.charCodeAt(i + 1), 0)
53
+ } else if (i + 1 === data.length) {
54
+ r += append3bytes(data.charCodeAt(i), 0, 0)
55
+ } else {
56
+ r += append3bytes(data.charCodeAt(i),
57
+ data.charCodeAt(i + 1),
58
+ data.charCodeAt(i + 2))
59
+ }
60
+ }
61
+ return r
62
+ }
63
+
64
+ },{}],3:[function(require,module,exports){
65
+ 'use strict'
66
+
67
+ var utf8bytes = require('utf8-bytes')
68
+ var pakoDeflate = require('pako/lib/deflate.js')
69
+ var encode64 = require('./encode64')
70
+
71
+ // 1. Encode in UTF-8
72
+ // 2. Compress using Deflate algorithm
73
+ // 3. Reencode using a transformation close to base64
74
+
75
+ module.exports.encode = function (text) {
76
+ var data = utf8bytes(text)
77
+ var deflated = pakoDeflate.deflate(data, { level: 9, to: 'string', raw: true })
78
+ return encode64.encode(deflated)
79
+ }
80
+
81
+ },{"./encode64":2,"pako/lib/deflate.js":4,"utf8-bytes":13}],4:[function(require,module,exports){
82
+ 'use strict';
83
+
84
+
85
+ var zlib_deflate = require('./zlib/deflate');
86
+ var utils = require('./utils/common');
87
+ var strings = require('./utils/strings');
88
+ var msg = require('./zlib/messages');
89
+ var ZStream = require('./zlib/zstream');
90
+
91
+ var toString = Object.prototype.toString;
92
+
93
+ /* Public constants ==========================================================*/
94
+ /* ===========================================================================*/
95
+
96
+ var Z_NO_FLUSH = 0;
97
+ var Z_FINISH = 4;
98
+
99
+ var Z_OK = 0;
100
+ var Z_STREAM_END = 1;
101
+ var Z_SYNC_FLUSH = 2;
102
+
103
+ var Z_DEFAULT_COMPRESSION = -1;
104
+
105
+ var Z_DEFAULT_STRATEGY = 0;
106
+
107
+ var Z_DEFLATED = 8;
108
+
109
+ /* ===========================================================================*/
110
+
111
+
112
+ /**
113
+ * class Deflate
114
+ *
115
+ * Generic JS-style wrapper for zlib calls. If you don't need
116
+ * streaming behaviour - use more simple functions: [[deflate]],
117
+ * [[deflateRaw]] and [[gzip]].
118
+ **/
119
+
120
+ /* internal
121
+ * Deflate.chunks -> Array
122
+ *
123
+ * Chunks of output data, if [[Deflate#onData]] not overriden.
124
+ **/
125
+
126
+ /**
127
+ * Deflate.result -> Uint8Array|Array
128
+ *
129
+ * Compressed result, generated by default [[Deflate#onData]]
130
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
131
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you
132
+ * push a chunk with explicit flush (call [[Deflate#push]] with
133
+ * `Z_SYNC_FLUSH` param).
134
+ **/
135
+
136
+ /**
137
+ * Deflate.err -> Number
138
+ *
139
+ * Error code after deflate finished. 0 (Z_OK) on success.
140
+ * You will not need it in real life, because deflate errors
141
+ * are possible only on wrong options or bad `onData` / `onEnd`
142
+ * custom handlers.
143
+ **/
144
+
145
+ /**
146
+ * Deflate.msg -> String
147
+ *
148
+ * Error message, if [[Deflate.err]] != 0
149
+ **/
150
+
151
+
152
+ /**
153
+ * new Deflate(options)
154
+ * - options (Object): zlib deflate options.
155
+ *
156
+ * Creates new deflator instance with specified params. Throws exception
157
+ * on bad params. Supported options:
158
+ *
159
+ * - `level`
160
+ * - `windowBits`
161
+ * - `memLevel`
162
+ * - `strategy`
163
+ * - `dictionary`
164
+ *
165
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
166
+ * for more information on these.
167
+ *
168
+ * Additional options, for internal needs:
169
+ *
170
+ * - `chunkSize` - size of generated data chunks (16K by default)
171
+ * - `raw` (Boolean) - do raw deflate
172
+ * - `gzip` (Boolean) - create gzip wrapper
173
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
174
+ * (each char code [0..255])
175
+ * - `header` (Object) - custom header for gzip
176
+ * - `text` (Boolean) - true if compressed data believed to be text
177
+ * - `time` (Number) - modification time, unix timestamp
178
+ * - `os` (Number) - operation system code
179
+ * - `extra` (Array) - array of bytes with extra data (max 65536)
180
+ * - `name` (String) - file name (binary string)
181
+ * - `comment` (String) - comment (binary string)
182
+ * - `hcrc` (Boolean) - true if header crc should be added
183
+ *
184
+ * ##### Example:
185
+ *
186
+ * ```javascript
187
+ * var pako = require('pako')
188
+ * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
189
+ * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
190
+ *
191
+ * var deflate = new pako.Deflate({ level: 3});
192
+ *
193
+ * deflate.push(chunk1, false);
194
+ * deflate.push(chunk2, true); // true -> last chunk
195
+ *
196
+ * if (deflate.err) { throw new Error(deflate.err); }
197
+ *
198
+ * console.log(deflate.result);
199
+ * ```
200
+ **/
201
+ function Deflate(options) {
202
+ if (!(this instanceof Deflate)) return new Deflate(options);
203
+
204
+ this.options = utils.assign({
205
+ level: Z_DEFAULT_COMPRESSION,
206
+ method: Z_DEFLATED,
207
+ chunkSize: 16384,
208
+ windowBits: 15,
209
+ memLevel: 8,
210
+ strategy: Z_DEFAULT_STRATEGY,
211
+ to: ''
212
+ }, options || {});
213
+
214
+ var opt = this.options;
215
+
216
+ if (opt.raw && (opt.windowBits > 0)) {
217
+ opt.windowBits = -opt.windowBits;
218
+ }
219
+
220
+ else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
221
+ opt.windowBits += 16;
222
+ }
223
+
224
+ this.err = 0; // error code, if happens (0 = Z_OK)
225
+ this.msg = ''; // error message
226
+ this.ended = false; // used to avoid multiple onEnd() calls
227
+ this.chunks = []; // chunks of compressed data
228
+
229
+ this.strm = new ZStream();
230
+ this.strm.avail_out = 0;
231
+
232
+ var status = zlib_deflate.deflateInit2(
233
+ this.strm,
234
+ opt.level,
235
+ opt.method,
236
+ opt.windowBits,
237
+ opt.memLevel,
238
+ opt.strategy
239
+ );
240
+
241
+ if (status !== Z_OK) {
242
+ throw new Error(msg[status]);
243
+ }
244
+
245
+ if (opt.header) {
246
+ zlib_deflate.deflateSetHeader(this.strm, opt.header);
247
+ }
248
+
249
+ if (opt.dictionary) {
250
+ var dict;
251
+ // Convert data if needed
252
+ if (typeof opt.dictionary === 'string') {
253
+ // If we need to compress text, change encoding to utf8.
254
+ dict = strings.string2buf(opt.dictionary);
255
+ } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
256
+ dict = new Uint8Array(opt.dictionary);
257
+ } else {
258
+ dict = opt.dictionary;
259
+ }
260
+
261
+ status = zlib_deflate.deflateSetDictionary(this.strm, dict);
262
+
263
+ if (status !== Z_OK) {
264
+ throw new Error(msg[status]);
265
+ }
266
+
267
+ this._dict_set = true;
268
+ }
269
+ }
270
+
271
+ /**
272
+ * Deflate#push(data[, mode]) -> Boolean
273
+ * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be
274
+ * converted to utf8 byte sequence.
275
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
276
+ * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
277
+ *
278
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
279
+ * new compressed chunks. Returns `true` on success. The last data block must have
280
+ * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
281
+ * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you
282
+ * can use mode Z_SYNC_FLUSH, keeping the compression context.
283
+ *
284
+ * On fail call [[Deflate#onEnd]] with error code and return false.
285
+ *
286
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
287
+ * array format is detected automatically). Also, don't skip last param and always
288
+ * use the same type in your code (boolean or number). That will improve JS speed.
289
+ *
290
+ * For regular `Array`-s make sure all elements are [0..255].
291
+ *
292
+ * ##### Example
293
+ *
294
+ * ```javascript
295
+ * push(chunk, false); // push one of data chunks
296
+ * ...
297
+ * push(chunk, true); // push last chunk
298
+ * ```
299
+ **/
300
+ Deflate.prototype.push = function (data, mode) {
301
+ var strm = this.strm;
302
+ var chunkSize = this.options.chunkSize;
303
+ var status, _mode;
304
+
305
+ if (this.ended) { return false; }
306
+
307
+ _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
308
+
309
+ // Convert data if needed
310
+ if (typeof data === 'string') {
311
+ // If we need to compress text, change encoding to utf8.
312
+ strm.input = strings.string2buf(data);
313
+ } else if (toString.call(data) === '[object ArrayBuffer]') {
314
+ strm.input = new Uint8Array(data);
315
+ } else {
316
+ strm.input = data;
317
+ }
318
+
319
+ strm.next_in = 0;
320
+ strm.avail_in = strm.input.length;
321
+
322
+ do {
323
+ if (strm.avail_out === 0) {
324
+ strm.output = new utils.Buf8(chunkSize);
325
+ strm.next_out = 0;
326
+ strm.avail_out = chunkSize;
327
+ }
328
+ status = zlib_deflate.deflate(strm, _mode); /* no bad return value */
329
+
330
+ if (status !== Z_STREAM_END && status !== Z_OK) {
331
+ this.onEnd(status);
332
+ this.ended = true;
333
+ return false;
334
+ }
335
+ if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {
336
+ if (this.options.to === 'string') {
337
+ this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
338
+ } else {
339
+ this.onData(utils.shrinkBuf(strm.output, strm.next_out));
340
+ }
341
+ }
342
+ } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
343
+
344
+ // Finalize on the last chunk.
345
+ if (_mode === Z_FINISH) {
346
+ status = zlib_deflate.deflateEnd(this.strm);
347
+ this.onEnd(status);
348
+ this.ended = true;
349
+ return status === Z_OK;
350
+ }
351
+
352
+ // callback interim results if Z_SYNC_FLUSH.
353
+ if (_mode === Z_SYNC_FLUSH) {
354
+ this.onEnd(Z_OK);
355
+ strm.avail_out = 0;
356
+ return true;
357
+ }
358
+
359
+ return true;
360
+ };
361
+
362
+
363
+ /**
364
+ * Deflate#onData(chunk) -> Void
365
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
366
+ * on js engine support. When string output requested, each chunk
367
+ * will be string.
368
+ *
369
+ * By default, stores data blocks in `chunks[]` property and glue
370
+ * those in `onEnd`. Override this handler, if you need another behaviour.
371
+ **/
372
+ Deflate.prototype.onData = function (chunk) {
373
+ this.chunks.push(chunk);
374
+ };
375
+
376
+
377
+ /**
378
+ * Deflate#onEnd(status) -> Void
379
+ * - status (Number): deflate status. 0 (Z_OK) on success,
380
+ * other if not.
381
+ *
382
+ * Called once after you tell deflate that the input stream is
383
+ * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
384
+ * or if an error happened. By default - join collected chunks,
385
+ * free memory and fill `results` / `err` properties.
386
+ **/
387
+ Deflate.prototype.onEnd = function (status) {
388
+ // On success - join
389
+ if (status === Z_OK) {
390
+ if (this.options.to === 'string') {
391
+ this.result = this.chunks.join('');
392
+ } else {
393
+ this.result = utils.flattenChunks(this.chunks);
394
+ }
395
+ }
396
+ this.chunks = [];
397
+ this.err = status;
398
+ this.msg = this.strm.msg;
399
+ };
400
+
401
+
402
+ /**
403
+ * deflate(data[, options]) -> Uint8Array|Array|String
404
+ * - data (Uint8Array|Array|String): input data to compress.
405
+ * - options (Object): zlib deflate options.
406
+ *
407
+ * Compress `data` with deflate algorithm and `options`.
408
+ *
409
+ * Supported options are:
410
+ *
411
+ * - level
412
+ * - windowBits
413
+ * - memLevel
414
+ * - strategy
415
+ * - dictionary
416
+ *
417
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
418
+ * for more information on these.
419
+ *
420
+ * Sugar (options):
421
+ *
422
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
423
+ * negative windowBits implicitly.
424
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
425
+ * (each char code [0..255])
426
+ *
427
+ * ##### Example:
428
+ *
429
+ * ```javascript
430
+ * var pako = require('pako')
431
+ * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
432
+ *
433
+ * console.log(pako.deflate(data));
434
+ * ```
435
+ **/
436
+ function deflate(input, options) {
437
+ var deflator = new Deflate(options);
438
+
439
+ deflator.push(input, true);
440
+
441
+ // That will never happens, if you don't cheat with options :)
442
+ if (deflator.err) { throw deflator.msg; }
443
+
444
+ return deflator.result;
445
+ }
446
+
447
+
448
+ /**
449
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
450
+ * - data (Uint8Array|Array|String): input data to compress.
451
+ * - options (Object): zlib deflate options.
452
+ *
453
+ * The same as [[deflate]], but creates raw data, without wrapper
454
+ * (header and adler32 crc).
455
+ **/
456
+ function deflateRaw(input, options) {
457
+ options = options || {};
458
+ options.raw = true;
459
+ return deflate(input, options);
460
+ }
461
+
462
+
463
+ /**
464
+ * gzip(data[, options]) -> Uint8Array|Array|String
465
+ * - data (Uint8Array|Array|String): input data to compress.
466
+ * - options (Object): zlib deflate options.
467
+ *
468
+ * The same as [[deflate]], but create gzip wrapper instead of
469
+ * deflate one.
470
+ **/
471
+ function gzip(input, options) {
472
+ options = options || {};
473
+ options.gzip = true;
474
+ return deflate(input, options);
475
+ }
476
+
477
+
478
+ exports.Deflate = Deflate;
479
+ exports.deflate = deflate;
480
+ exports.deflateRaw = deflateRaw;
481
+ exports.gzip = gzip;
482
+
483
+ },{"./utils/common":5,"./utils/strings":6,"./zlib/deflate":9,"./zlib/messages":10,"./zlib/zstream":12}],5:[function(require,module,exports){
484
+ 'use strict';
485
+
486
+
487
+ var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
488
+ (typeof Uint16Array !== 'undefined') &&
489
+ (typeof Int32Array !== 'undefined');
490
+
491
+
492
+ exports.assign = function (obj /*from1, from2, from3, ...*/) {
493
+ var sources = Array.prototype.slice.call(arguments, 1);
494
+ while (sources.length) {
495
+ var source = sources.shift();
496
+ if (!source) { continue; }
497
+
498
+ if (typeof source !== 'object') {
499
+ throw new TypeError(source + 'must be non-object');
500
+ }
501
+
502
+ for (var p in source) {
503
+ if (source.hasOwnProperty(p)) {
504
+ obj[p] = source[p];
505
+ }
506
+ }
507
+ }
508
+
509
+ return obj;
510
+ };
511
+
512
+
513
+ // reduce buffer size, avoiding mem copy
514
+ exports.shrinkBuf = function (buf, size) {
515
+ if (buf.length === size) { return buf; }
516
+ if (buf.subarray) { return buf.subarray(0, size); }
517
+ buf.length = size;
518
+ return buf;
519
+ };
520
+
521
+
522
+ var fnTyped = {
523
+ arraySet: function (dest, src, src_offs, len, dest_offs) {
524
+ if (src.subarray && dest.subarray) {
525
+ dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
526
+ return;
527
+ }
528
+ // Fallback to ordinary array
529
+ for (var i = 0; i < len; i++) {
530
+ dest[dest_offs + i] = src[src_offs + i];
531
+ }
532
+ },
533
+ // Join array of chunks to single array.
534
+ flattenChunks: function (chunks) {
535
+ var i, l, len, pos, chunk, result;
536
+
537
+ // calculate data length
538
+ len = 0;
539
+ for (i = 0, l = chunks.length; i < l; i++) {
540
+ len += chunks[i].length;
541
+ }
542
+
543
+ // join chunks
544
+ result = new Uint8Array(len);
545
+ pos = 0;
546
+ for (i = 0, l = chunks.length; i < l; i++) {
547
+ chunk = chunks[i];
548
+ result.set(chunk, pos);
549
+ pos += chunk.length;
550
+ }
551
+
552
+ return result;
553
+ }
554
+ };
555
+
556
+ var fnUntyped = {
557
+ arraySet: function (dest, src, src_offs, len, dest_offs) {
558
+ for (var i = 0; i < len; i++) {
559
+ dest[dest_offs + i] = src[src_offs + i];
560
+ }
561
+ },
562
+ // Join array of chunks to single array.
563
+ flattenChunks: function (chunks) {
564
+ return [].concat.apply([], chunks);
565
+ }
566
+ };
567
+
568
+
569
+ // Enable/Disable typed arrays use, for testing
570
+ //
571
+ exports.setTyped = function (on) {
572
+ if (on) {
573
+ exports.Buf8 = Uint8Array;
574
+ exports.Buf16 = Uint16Array;
575
+ exports.Buf32 = Int32Array;
576
+ exports.assign(exports, fnTyped);
577
+ } else {
578
+ exports.Buf8 = Array;
579
+ exports.Buf16 = Array;
580
+ exports.Buf32 = Array;
581
+ exports.assign(exports, fnUntyped);
582
+ }
583
+ };
584
+
585
+ exports.setTyped(TYPED_OK);
586
+
587
+ },{}],6:[function(require,module,exports){
588
+ // String encode/decode helpers
589
+ 'use strict';
590
+
591
+
592
+ var utils = require('./common');
593
+
594
+
595
+ // Quick check if we can use fast array to bin string conversion
596
+ //
597
+ // - apply(Array) can fail on Android 2.2
598
+ // - apply(Uint8Array) can fail on iOS 5.1 Safary
599
+ //
600
+ var STR_APPLY_OK = true;
601
+ var STR_APPLY_UIA_OK = true;
602
+
603
+ try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
604
+ try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
605
+
606
+
607
+ // Table with utf8 lengths (calculated by first byte of sequence)
608
+ // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
609
+ // because max possible codepoint is 0x10ffff
610
+ var _utf8len = new utils.Buf8(256);
611
+ for (var q = 0; q < 256; q++) {
612
+ _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
613
+ }
614
+ _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
615
+
616
+
617
+ // convert string to array (typed, when possible)
618
+ exports.string2buf = function (str) {
619
+ var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
620
+
621
+ // count binary size
622
+ for (m_pos = 0; m_pos < str_len; m_pos++) {
623
+ c = str.charCodeAt(m_pos);
624
+ if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
625
+ c2 = str.charCodeAt(m_pos + 1);
626
+ if ((c2 & 0xfc00) === 0xdc00) {
627
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
628
+ m_pos++;
629
+ }
630
+ }
631
+ buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
632
+ }
633
+
634
+ // allocate buffer
635
+ buf = new utils.Buf8(buf_len);
636
+
637
+ // convert
638
+ for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
639
+ c = str.charCodeAt(m_pos);
640
+ if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
641
+ c2 = str.charCodeAt(m_pos + 1);
642
+ if ((c2 & 0xfc00) === 0xdc00) {
643
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
644
+ m_pos++;
645
+ }
646
+ }
647
+ if (c < 0x80) {
648
+ /* one byte */
649
+ buf[i++] = c;
650
+ } else if (c < 0x800) {
651
+ /* two bytes */
652
+ buf[i++] = 0xC0 | (c >>> 6);
653
+ buf[i++] = 0x80 | (c & 0x3f);
654
+ } else if (c < 0x10000) {
655
+ /* three bytes */
656
+ buf[i++] = 0xE0 | (c >>> 12);
657
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
658
+ buf[i++] = 0x80 | (c & 0x3f);
659
+ } else {
660
+ /* four bytes */
661
+ buf[i++] = 0xf0 | (c >>> 18);
662
+ buf[i++] = 0x80 | (c >>> 12 & 0x3f);
663
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
664
+ buf[i++] = 0x80 | (c & 0x3f);
665
+ }
666
+ }
667
+
668
+ return buf;
669
+ };
670
+
671
+ // Helper (used in 2 places)
672
+ function buf2binstring(buf, len) {
673
+ // use fallback for big arrays to avoid stack overflow
674
+ if (len < 65537) {
675
+ if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
676
+ return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
677
+ }
678
+ }
679
+
680
+ var result = '';
681
+ for (var i = 0; i < len; i++) {
682
+ result += String.fromCharCode(buf[i]);
683
+ }
684
+ return result;
685
+ }
686
+
687
+
688
+ // Convert byte array to binary string
689
+ exports.buf2binstring = function (buf) {
690
+ return buf2binstring(buf, buf.length);
691
+ };
692
+
693
+
694
+ // Convert binary string (typed, when possible)
695
+ exports.binstring2buf = function (str) {
696
+ var buf = new utils.Buf8(str.length);
697
+ for (var i = 0, len = buf.length; i < len; i++) {
698
+ buf[i] = str.charCodeAt(i);
699
+ }
700
+ return buf;
701
+ };
702
+
703
+
704
+ // convert array to string
705
+ exports.buf2string = function (buf, max) {
706
+ var i, out, c, c_len;
707
+ var len = max || buf.length;
708
+
709
+ // Reserve max possible length (2 words per char)
710
+ // NB: by unknown reasons, Array is significantly faster for
711
+ // String.fromCharCode.apply than Uint16Array.
712
+ var utf16buf = new Array(len * 2);
713
+
714
+ for (out = 0, i = 0; i < len;) {
715
+ c = buf[i++];
716
+ // quick process ascii
717
+ if (c < 0x80) { utf16buf[out++] = c; continue; }
718
+
719
+ c_len = _utf8len[c];
720
+ // skip 5 & 6 byte codes
721
+ if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
722
+
723
+ // apply mask on first byte
724
+ c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
725
+ // join the rest
726
+ while (c_len > 1 && i < len) {
727
+ c = (c << 6) | (buf[i++] & 0x3f);
728
+ c_len--;
729
+ }
730
+
731
+ // terminated by end of string?
732
+ if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
733
+
734
+ if (c < 0x10000) {
735
+ utf16buf[out++] = c;
736
+ } else {
737
+ c -= 0x10000;
738
+ utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
739
+ utf16buf[out++] = 0xdc00 | (c & 0x3ff);
740
+ }
741
+ }
742
+
743
+ return buf2binstring(utf16buf, out);
744
+ };
745
+
746
+
747
+ // Calculate max possible position in utf8 buffer,
748
+ // that will not break sequence. If that's not possible
749
+ // - (very small limits) return max size as is.
750
+ //
751
+ // buf[] - utf8 bytes array
752
+ // max - length limit (mandatory);
753
+ exports.utf8border = function (buf, max) {
754
+ var pos;
755
+
756
+ max = max || buf.length;
757
+ if (max > buf.length) { max = buf.length; }
758
+
759
+ // go back from last position, until start of sequence found
760
+ pos = max - 1;
761
+ while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
762
+
763
+ // Fuckup - very small and broken sequence,
764
+ // return max, because we should return something anyway.
765
+ if (pos < 0) { return max; }
766
+
767
+ // If we came to start of buffer - that means vuffer is too small,
768
+ // return max too.
769
+ if (pos === 0) { return max; }
770
+
771
+ return (pos + _utf8len[buf[pos]] > max) ? pos : max;
772
+ };
773
+
774
+ },{"./common":5}],7:[function(require,module,exports){
775
+ 'use strict';
776
+
777
+ // Note: adler32 takes 12% for level 0 and 2% for level 6.
778
+ // It doesn't worth to make additional optimizationa as in original.
779
+ // Small size is preferable.
780
+
781
+ function adler32(adler, buf, len, pos) {
782
+ var s1 = (adler & 0xffff) |0,
783
+ s2 = ((adler >>> 16) & 0xffff) |0,
784
+ n = 0;
785
+
786
+ while (len !== 0) {
787
+ // Set limit ~ twice less than 5552, to keep
788
+ // s2 in 31-bits, because we force signed ints.
789
+ // in other case %= will fail.
790
+ n = len > 2000 ? 2000 : len;
791
+ len -= n;
792
+
793
+ do {
794
+ s1 = (s1 + buf[pos++]) |0;
795
+ s2 = (s2 + s1) |0;
796
+ } while (--n);
797
+
798
+ s1 %= 65521;
799
+ s2 %= 65521;
800
+ }
801
+
802
+ return (s1 | (s2 << 16)) |0;
803
+ }
804
+
805
+
806
+ module.exports = adler32;
807
+
808
+ },{}],8:[function(require,module,exports){
809
+ 'use strict';
810
+
811
+ // Note: we can't get significant speed boost here.
812
+ // So write code to minimize size - no pregenerated tables
813
+ // and array tools dependencies.
814
+
815
+
816
+ // Use ordinary array, since untyped makes no boost here
817
+ function makeTable() {
818
+ var c, table = [];
819
+
820
+ for (var n = 0; n < 256; n++) {
821
+ c = n;
822
+ for (var k = 0; k < 8; k++) {
823
+ c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
824
+ }
825
+ table[n] = c;
826
+ }
827
+
828
+ return table;
829
+ }
830
+
831
+ // Create table on load. Just 255 signed longs. Not a problem.
832
+ var crcTable = makeTable();
833
+
834
+
835
+ function crc32(crc, buf, len, pos) {
836
+ var t = crcTable,
837
+ end = pos + len;
838
+
839
+ crc ^= -1;
840
+
841
+ for (var i = pos; i < end; i++) {
842
+ crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
843
+ }
844
+
845
+ return (crc ^ (-1)); // >>> 0;
846
+ }
847
+
848
+
849
+ module.exports = crc32;
850
+
851
+ },{}],9:[function(require,module,exports){
852
+ 'use strict';
853
+
854
+ var utils = require('../utils/common');
855
+ var trees = require('./trees');
856
+ var adler32 = require('./adler32');
857
+ var crc32 = require('./crc32');
858
+ var msg = require('./messages');
859
+
860
+ /* Public constants ==========================================================*/
861
+ /* ===========================================================================*/
862
+
863
+
864
+ /* Allowed flush values; see deflate() and inflate() below for details */
865
+ var Z_NO_FLUSH = 0;
866
+ var Z_PARTIAL_FLUSH = 1;
867
+ //var Z_SYNC_FLUSH = 2;
868
+ var Z_FULL_FLUSH = 3;
869
+ var Z_FINISH = 4;
870
+ var Z_BLOCK = 5;
871
+ //var Z_TREES = 6;
872
+
873
+
874
+ /* Return codes for the compression/decompression functions. Negative values
875
+ * are errors, positive values are used for special but normal events.
876
+ */
877
+ var Z_OK = 0;
878
+ var Z_STREAM_END = 1;
879
+ //var Z_NEED_DICT = 2;
880
+ //var Z_ERRNO = -1;
881
+ var Z_STREAM_ERROR = -2;
882
+ var Z_DATA_ERROR = -3;
883
+ //var Z_MEM_ERROR = -4;
884
+ var Z_BUF_ERROR = -5;
885
+ //var Z_VERSION_ERROR = -6;
886
+
887
+
888
+ /* compression levels */
889
+ //var Z_NO_COMPRESSION = 0;
890
+ //var Z_BEST_SPEED = 1;
891
+ //var Z_BEST_COMPRESSION = 9;
892
+ var Z_DEFAULT_COMPRESSION = -1;
893
+
894
+
895
+ var Z_FILTERED = 1;
896
+ var Z_HUFFMAN_ONLY = 2;
897
+ var Z_RLE = 3;
898
+ var Z_FIXED = 4;
899
+ var Z_DEFAULT_STRATEGY = 0;
900
+
901
+ /* Possible values of the data_type field (though see inflate()) */
902
+ //var Z_BINARY = 0;
903
+ //var Z_TEXT = 1;
904
+ //var Z_ASCII = 1; // = Z_TEXT
905
+ var Z_UNKNOWN = 2;
906
+
907
+
908
+ /* The deflate compression method */
909
+ var Z_DEFLATED = 8;
910
+
911
+ /*============================================================================*/
912
+
913
+
914
+ var MAX_MEM_LEVEL = 9;
915
+ /* Maximum value for memLevel in deflateInit2 */
916
+ var MAX_WBITS = 15;
917
+ /* 32K LZ77 window */
918
+ var DEF_MEM_LEVEL = 8;
919
+
920
+
921
+ var LENGTH_CODES = 29;
922
+ /* number of length codes, not counting the special END_BLOCK code */
923
+ var LITERALS = 256;
924
+ /* number of literal bytes 0..255 */
925
+ var L_CODES = LITERALS + 1 + LENGTH_CODES;
926
+ /* number of Literal or Length codes, including the END_BLOCK code */
927
+ var D_CODES = 30;
928
+ /* number of distance codes */
929
+ var BL_CODES = 19;
930
+ /* number of codes used to transfer the bit lengths */
931
+ var HEAP_SIZE = 2 * L_CODES + 1;
932
+ /* maximum heap size */
933
+ var MAX_BITS = 15;
934
+ /* All codes must not exceed MAX_BITS bits */
935
+
936
+ var MIN_MATCH = 3;
937
+ var MAX_MATCH = 258;
938
+ var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
939
+
940
+ var PRESET_DICT = 0x20;
941
+
942
+ var INIT_STATE = 42;
943
+ var EXTRA_STATE = 69;
944
+ var NAME_STATE = 73;
945
+ var COMMENT_STATE = 91;
946
+ var HCRC_STATE = 103;
947
+ var BUSY_STATE = 113;
948
+ var FINISH_STATE = 666;
949
+
950
+ var BS_NEED_MORE = 1; /* block not completed, need more input or more output */
951
+ var BS_BLOCK_DONE = 2; /* block flush performed */
952
+ var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
953
+ var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */
954
+
955
+ var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
956
+
957
+ function err(strm, errorCode) {
958
+ strm.msg = msg[errorCode];
959
+ return errorCode;
960
+ }
961
+
962
+ function rank(f) {
963
+ return ((f) << 1) - ((f) > 4 ? 9 : 0);
964
+ }
965
+
966
+ function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
967
+
968
+
969
+ /* =========================================================================
970
+ * Flush as much pending output as possible. All deflate() output goes
971
+ * through this function so some applications may wish to modify it
972
+ * to avoid allocating a large strm->output buffer and copying into it.
973
+ * (See also read_buf()).
974
+ */
975
+ function flush_pending(strm) {
976
+ var s = strm.state;
977
+
978
+ //_tr_flush_bits(s);
979
+ var len = s.pending;
980
+ if (len > strm.avail_out) {
981
+ len = strm.avail_out;
982
+ }
983
+ if (len === 0) { return; }
984
+
985
+ utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
986
+ strm.next_out += len;
987
+ s.pending_out += len;
988
+ strm.total_out += len;
989
+ strm.avail_out -= len;
990
+ s.pending -= len;
991
+ if (s.pending === 0) {
992
+ s.pending_out = 0;
993
+ }
994
+ }
995
+
996
+
997
+ function flush_block_only(s, last) {
998
+ trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
999
+ s.block_start = s.strstart;
1000
+ flush_pending(s.strm);
1001
+ }
1002
+
1003
+
1004
+ function put_byte(s, b) {
1005
+ s.pending_buf[s.pending++] = b;
1006
+ }
1007
+
1008
+
1009
+ /* =========================================================================
1010
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
1011
+ * IN assertion: the stream state is correct and there is enough room in
1012
+ * pending_buf.
1013
+ */
1014
+ function putShortMSB(s, b) {
1015
+ // put_byte(s, (Byte)(b >> 8));
1016
+ // put_byte(s, (Byte)(b & 0xff));
1017
+ s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
1018
+ s.pending_buf[s.pending++] = b & 0xff;
1019
+ }
1020
+
1021
+
1022
+ /* ===========================================================================
1023
+ * Read a new buffer from the current input stream, update the adler32
1024
+ * and total number of bytes read. All deflate() input goes through
1025
+ * this function so some applications may wish to modify it to avoid
1026
+ * allocating a large strm->input buffer and copying from it.
1027
+ * (See also flush_pending()).
1028
+ */
1029
+ function read_buf(strm, buf, start, size) {
1030
+ var len = strm.avail_in;
1031
+
1032
+ if (len > size) { len = size; }
1033
+ if (len === 0) { return 0; }
1034
+
1035
+ strm.avail_in -= len;
1036
+
1037
+ // zmemcpy(buf, strm->next_in, len);
1038
+ utils.arraySet(buf, strm.input, strm.next_in, len, start);
1039
+ if (strm.state.wrap === 1) {
1040
+ strm.adler = adler32(strm.adler, buf, len, start);
1041
+ }
1042
+
1043
+ else if (strm.state.wrap === 2) {
1044
+ strm.adler = crc32(strm.adler, buf, len, start);
1045
+ }
1046
+
1047
+ strm.next_in += len;
1048
+ strm.total_in += len;
1049
+
1050
+ return len;
1051
+ }
1052
+
1053
+
1054
+ /* ===========================================================================
1055
+ * Set match_start to the longest match starting at the given string and
1056
+ * return its length. Matches shorter or equal to prev_length are discarded,
1057
+ * in which case the result is equal to prev_length and match_start is
1058
+ * garbage.
1059
+ * IN assertions: cur_match is the head of the hash chain for the current
1060
+ * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
1061
+ * OUT assertion: the match length is not greater than s->lookahead.
1062
+ */
1063
+ function longest_match(s, cur_match) {
1064
+ var chain_length = s.max_chain_length; /* max hash chain length */
1065
+ var scan = s.strstart; /* current string */
1066
+ var match; /* matched string */
1067
+ var len; /* length of current match */
1068
+ var best_len = s.prev_length; /* best match length so far */
1069
+ var nice_match = s.nice_match; /* stop if match long enough */
1070
+ var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
1071
+ s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
1072
+
1073
+ var _win = s.window; // shortcut
1074
+
1075
+ var wmask = s.w_mask;
1076
+ var prev = s.prev;
1077
+
1078
+ /* Stop when cur_match becomes <= limit. To simplify the code,
1079
+ * we prevent matches with the string of window index 0.
1080
+ */
1081
+
1082
+ var strend = s.strstart + MAX_MATCH;
1083
+ var scan_end1 = _win[scan + best_len - 1];
1084
+ var scan_end = _win[scan + best_len];
1085
+
1086
+ /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
1087
+ * It is easy to get rid of this optimization if necessary.
1088
+ */
1089
+ // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
1090
+
1091
+ /* Do not waste too much time if we already have a good match: */
1092
+ if (s.prev_length >= s.good_match) {
1093
+ chain_length >>= 2;
1094
+ }
1095
+ /* Do not look for matches beyond the end of the input. This is necessary
1096
+ * to make deflate deterministic.
1097
+ */
1098
+ if (nice_match > s.lookahead) { nice_match = s.lookahead; }
1099
+
1100
+ // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
1101
+
1102
+ do {
1103
+ // Assert(cur_match < s->strstart, "no future");
1104
+ match = cur_match;
1105
+
1106
+ /* Skip to next match if the match length cannot increase
1107
+ * or if the match length is less than 2. Note that the checks below
1108
+ * for insufficient lookahead only occur occasionally for performance
1109
+ * reasons. Therefore uninitialized memory will be accessed, and
1110
+ * conditional jumps will be made that depend on those values.
1111
+ * However the length of the match is limited to the lookahead, so
1112
+ * the output of deflate is not affected by the uninitialized values.
1113
+ */
1114
+
1115
+ if (_win[match + best_len] !== scan_end ||
1116
+ _win[match + best_len - 1] !== scan_end1 ||
1117
+ _win[match] !== _win[scan] ||
1118
+ _win[++match] !== _win[scan + 1]) {
1119
+ continue;
1120
+ }
1121
+
1122
+ /* The check at best_len-1 can be removed because it will be made
1123
+ * again later. (This heuristic is not always a win.)
1124
+ * It is not necessary to compare scan[2] and match[2] since they
1125
+ * are always equal when the other bytes match, given that
1126
+ * the hash keys are equal and that HASH_BITS >= 8.
1127
+ */
1128
+ scan += 2;
1129
+ match++;
1130
+ // Assert(*scan == *match, "match[2]?");
1131
+
1132
+ /* We check for insufficient lookahead only every 8th comparison;
1133
+ * the 256th check will be made at strstart+258.
1134
+ */
1135
+ do {
1136
+ /*jshint noempty:false*/
1137
+ } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
1138
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
1139
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
1140
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
1141
+ scan < strend);
1142
+
1143
+ // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
1144
+
1145
+ len = MAX_MATCH - (strend - scan);
1146
+ scan = strend - MAX_MATCH;
1147
+
1148
+ if (len > best_len) {
1149
+ s.match_start = cur_match;
1150
+ best_len = len;
1151
+ if (len >= nice_match) {
1152
+ break;
1153
+ }
1154
+ scan_end1 = _win[scan + best_len - 1];
1155
+ scan_end = _win[scan + best_len];
1156
+ }
1157
+ } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
1158
+
1159
+ if (best_len <= s.lookahead) {
1160
+ return best_len;
1161
+ }
1162
+ return s.lookahead;
1163
+ }
1164
+
1165
+
1166
+ /* ===========================================================================
1167
+ * Fill the window when the lookahead becomes insufficient.
1168
+ * Updates strstart and lookahead.
1169
+ *
1170
+ * IN assertion: lookahead < MIN_LOOKAHEAD
1171
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
1172
+ * At least one byte has been read, or avail_in == 0; reads are
1173
+ * performed for at least two bytes (required for the zip translate_eol
1174
+ * option -- not supported here).
1175
+ */
1176
+ function fill_window(s) {
1177
+ var _w_size = s.w_size;
1178
+ var p, n, m, more, str;
1179
+
1180
+ //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
1181
+
1182
+ do {
1183
+ more = s.window_size - s.lookahead - s.strstart;
1184
+
1185
+ // JS ints have 32 bit, block below not needed
1186
+ /* Deal with !@#$% 64K limit: */
1187
+ //if (sizeof(int) <= 2) {
1188
+ // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
1189
+ // more = wsize;
1190
+ //
1191
+ // } else if (more == (unsigned)(-1)) {
1192
+ // /* Very unlikely, but possible on 16 bit machine if
1193
+ // * strstart == 0 && lookahead == 1 (input done a byte at time)
1194
+ // */
1195
+ // more--;
1196
+ // }
1197
+ //}
1198
+
1199
+
1200
+ /* If the window is almost full and there is insufficient lookahead,
1201
+ * move the upper half to the lower one to make room in the upper half.
1202
+ */
1203
+ if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
1204
+
1205
+ utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
1206
+ s.match_start -= _w_size;
1207
+ s.strstart -= _w_size;
1208
+ /* we now have strstart >= MAX_DIST */
1209
+ s.block_start -= _w_size;
1210
+
1211
+ /* Slide the hash table (could be avoided with 32 bit values
1212
+ at the expense of memory usage). We slide even when level == 0
1213
+ to keep the hash table consistent if we switch back to level > 0
1214
+ later. (Using level 0 permanently is not an optimal usage of
1215
+ zlib, so we don't care about this pathological case.)
1216
+ */
1217
+
1218
+ n = s.hash_size;
1219
+ p = n;
1220
+ do {
1221
+ m = s.head[--p];
1222
+ s.head[p] = (m >= _w_size ? m - _w_size : 0);
1223
+ } while (--n);
1224
+
1225
+ n = _w_size;
1226
+ p = n;
1227
+ do {
1228
+ m = s.prev[--p];
1229
+ s.prev[p] = (m >= _w_size ? m - _w_size : 0);
1230
+ /* If n is not on any hash chain, prev[n] is garbage but
1231
+ * its value will never be used.
1232
+ */
1233
+ } while (--n);
1234
+
1235
+ more += _w_size;
1236
+ }
1237
+ if (s.strm.avail_in === 0) {
1238
+ break;
1239
+ }
1240
+
1241
+ /* If there was no sliding:
1242
+ * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
1243
+ * more == window_size - lookahead - strstart
1244
+ * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
1245
+ * => more >= window_size - 2*WSIZE + 2
1246
+ * In the BIG_MEM or MMAP case (not yet supported),
1247
+ * window_size == input_size + MIN_LOOKAHEAD &&
1248
+ * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
1249
+ * Otherwise, window_size == 2*WSIZE so more >= 2.
1250
+ * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
1251
+ */
1252
+ //Assert(more >= 2, "more < 2");
1253
+ n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
1254
+ s.lookahead += n;
1255
+
1256
+ /* Initialize the hash value now that we have some input: */
1257
+ if (s.lookahead + s.insert >= MIN_MATCH) {
1258
+ str = s.strstart - s.insert;
1259
+ s.ins_h = s.window[str];
1260
+
1261
+ /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
1262
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
1263
+ //#if MIN_MATCH != 3
1264
+ // Call update_hash() MIN_MATCH-3 more times
1265
+ //#endif
1266
+ while (s.insert) {
1267
+ /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
1268
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
1269
+
1270
+ s.prev[str & s.w_mask] = s.head[s.ins_h];
1271
+ s.head[s.ins_h] = str;
1272
+ str++;
1273
+ s.insert--;
1274
+ if (s.lookahead + s.insert < MIN_MATCH) {
1275
+ break;
1276
+ }
1277
+ }
1278
+ }
1279
+ /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
1280
+ * but this is not important since only literal bytes will be emitted.
1281
+ */
1282
+
1283
+ } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
1284
+
1285
+ /* If the WIN_INIT bytes after the end of the current data have never been
1286
+ * written, then zero those bytes in order to avoid memory check reports of
1287
+ * the use of uninitialized (or uninitialised as Julian writes) bytes by
1288
+ * the longest match routines. Update the high water mark for the next
1289
+ * time through here. WIN_INIT is set to MAX_MATCH since the longest match
1290
+ * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
1291
+ */
1292
+ // if (s.high_water < s.window_size) {
1293
+ // var curr = s.strstart + s.lookahead;
1294
+ // var init = 0;
1295
+ //
1296
+ // if (s.high_water < curr) {
1297
+ // /* Previous high water mark below current data -- zero WIN_INIT
1298
+ // * bytes or up to end of window, whichever is less.
1299
+ // */
1300
+ // init = s.window_size - curr;
1301
+ // if (init > WIN_INIT)
1302
+ // init = WIN_INIT;
1303
+ // zmemzero(s->window + curr, (unsigned)init);
1304
+ // s->high_water = curr + init;
1305
+ // }
1306
+ // else if (s->high_water < (ulg)curr + WIN_INIT) {
1307
+ // /* High water mark at or above current data, but below current data
1308
+ // * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
1309
+ // * to end of window, whichever is less.
1310
+ // */
1311
+ // init = (ulg)curr + WIN_INIT - s->high_water;
1312
+ // if (init > s->window_size - s->high_water)
1313
+ // init = s->window_size - s->high_water;
1314
+ // zmemzero(s->window + s->high_water, (unsigned)init);
1315
+ // s->high_water += init;
1316
+ // }
1317
+ // }
1318
+ //
1319
+ // Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
1320
+ // "not enough room for search");
1321
+ }
1322
+
1323
+ /* ===========================================================================
1324
+ * Copy without compression as much as possible from the input stream, return
1325
+ * the current block state.
1326
+ * This function does not insert new strings in the dictionary since
1327
+ * uncompressible data is probably not useful. This function is used
1328
+ * only for the level=0 compression option.
1329
+ * NOTE: this function should be optimized to avoid extra copying from
1330
+ * window to pending_buf.
1331
+ */
1332
+ function deflate_stored(s, flush) {
1333
+ /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
1334
+ * to pending_buf_size, and each stored block has a 5 byte header:
1335
+ */
1336
+ var max_block_size = 0xffff;
1337
+
1338
+ if (max_block_size > s.pending_buf_size - 5) {
1339
+ max_block_size = s.pending_buf_size - 5;
1340
+ }
1341
+
1342
+ /* Copy as much as possible from input to output: */
1343
+ for (;;) {
1344
+ /* Fill the window as much as possible: */
1345
+ if (s.lookahead <= 1) {
1346
+
1347
+ //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
1348
+ // s->block_start >= (long)s->w_size, "slide too late");
1349
+ // if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
1350
+ // s.block_start >= s.w_size)) {
1351
+ // throw new Error("slide too late");
1352
+ // }
1353
+
1354
+ fill_window(s);
1355
+ if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
1356
+ return BS_NEED_MORE;
1357
+ }
1358
+
1359
+ if (s.lookahead === 0) {
1360
+ break;
1361
+ }
1362
+ /* flush the current block */
1363
+ }
1364
+ //Assert(s->block_start >= 0L, "block gone");
1365
+ // if (s.block_start < 0) throw new Error("block gone");
1366
+
1367
+ s.strstart += s.lookahead;
1368
+ s.lookahead = 0;
1369
+
1370
+ /* Emit a stored block if pending_buf will be full: */
1371
+ var max_start = s.block_start + max_block_size;
1372
+
1373
+ if (s.strstart === 0 || s.strstart >= max_start) {
1374
+ /* strstart == 0 is possible when wraparound on 16-bit machine */
1375
+ s.lookahead = s.strstart - max_start;
1376
+ s.strstart = max_start;
1377
+ /*** FLUSH_BLOCK(s, 0); ***/
1378
+ flush_block_only(s, false);
1379
+ if (s.strm.avail_out === 0) {
1380
+ return BS_NEED_MORE;
1381
+ }
1382
+ /***/
1383
+
1384
+
1385
+ }
1386
+ /* Flush if we may have to slide, otherwise block_start may become
1387
+ * negative and the data will be gone:
1388
+ */
1389
+ if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
1390
+ /*** FLUSH_BLOCK(s, 0); ***/
1391
+ flush_block_only(s, false);
1392
+ if (s.strm.avail_out === 0) {
1393
+ return BS_NEED_MORE;
1394
+ }
1395
+ /***/
1396
+ }
1397
+ }
1398
+
1399
+ s.insert = 0;
1400
+
1401
+ if (flush === Z_FINISH) {
1402
+ /*** FLUSH_BLOCK(s, 1); ***/
1403
+ flush_block_only(s, true);
1404
+ if (s.strm.avail_out === 0) {
1405
+ return BS_FINISH_STARTED;
1406
+ }
1407
+ /***/
1408
+ return BS_FINISH_DONE;
1409
+ }
1410
+
1411
+ if (s.strstart > s.block_start) {
1412
+ /*** FLUSH_BLOCK(s, 0); ***/
1413
+ flush_block_only(s, false);
1414
+ if (s.strm.avail_out === 0) {
1415
+ return BS_NEED_MORE;
1416
+ }
1417
+ /***/
1418
+ }
1419
+
1420
+ return BS_NEED_MORE;
1421
+ }
1422
+
1423
+ /* ===========================================================================
1424
+ * Compress as much as possible from the input stream, return the current
1425
+ * block state.
1426
+ * This function does not perform lazy evaluation of matches and inserts
1427
+ * new strings in the dictionary only for unmatched strings or for short
1428
+ * matches. It is used only for the fast compression options.
1429
+ */
1430
+ function deflate_fast(s, flush) {
1431
+ var hash_head; /* head of the hash chain */
1432
+ var bflush; /* set if current block must be flushed */
1433
+
1434
+ for (;;) {
1435
+ /* Make sure that we always have enough lookahead, except
1436
+ * at the end of the input file. We need MAX_MATCH bytes
1437
+ * for the next match, plus MIN_MATCH bytes to insert the
1438
+ * string following the next match.
1439
+ */
1440
+ if (s.lookahead < MIN_LOOKAHEAD) {
1441
+ fill_window(s);
1442
+ if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
1443
+ return BS_NEED_MORE;
1444
+ }
1445
+ if (s.lookahead === 0) {
1446
+ break; /* flush the current block */
1447
+ }
1448
+ }
1449
+
1450
+ /* Insert the string window[strstart .. strstart+2] in the
1451
+ * dictionary, and set hash_head to the head of the hash chain:
1452
+ */
1453
+ hash_head = 0/*NIL*/;
1454
+ if (s.lookahead >= MIN_MATCH) {
1455
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
1456
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
1457
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
1458
+ s.head[s.ins_h] = s.strstart;
1459
+ /***/
1460
+ }
1461
+
1462
+ /* Find the longest match, discarding those <= prev_length.
1463
+ * At this point we have always match_length < MIN_MATCH
1464
+ */
1465
+ if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
1466
+ /* To simplify the code, we prevent matches with the string
1467
+ * of window index 0 (in particular we have to avoid a match
1468
+ * of the string with itself at the start of the input file).
1469
+ */
1470
+ s.match_length = longest_match(s, hash_head);
1471
+ /* longest_match() sets match_start */
1472
+ }
1473
+ if (s.match_length >= MIN_MATCH) {
1474
+ // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
1475
+
1476
+ /*** _tr_tally_dist(s, s.strstart - s.match_start,
1477
+ s.match_length - MIN_MATCH, bflush); ***/
1478
+ bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
1479
+
1480
+ s.lookahead -= s.match_length;
1481
+
1482
+ /* Insert new strings in the hash table only if the match length
1483
+ * is not too large. This saves time but degrades compression.
1484
+ */
1485
+ if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
1486
+ s.match_length--; /* string at strstart already in table */
1487
+ do {
1488
+ s.strstart++;
1489
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
1490
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
1491
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
1492
+ s.head[s.ins_h] = s.strstart;
1493
+ /***/
1494
+ /* strstart never exceeds WSIZE-MAX_MATCH, so there are
1495
+ * always MIN_MATCH bytes ahead.
1496
+ */
1497
+ } while (--s.match_length !== 0);
1498
+ s.strstart++;
1499
+ } else
1500
+ {
1501
+ s.strstart += s.match_length;
1502
+ s.match_length = 0;
1503
+ s.ins_h = s.window[s.strstart];
1504
+ /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
1505
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
1506
+
1507
+ //#if MIN_MATCH != 3
1508
+ // Call UPDATE_HASH() MIN_MATCH-3 more times
1509
+ //#endif
1510
+ /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
1511
+ * matter since it will be recomputed at next deflate call.
1512
+ */
1513
+ }
1514
+ } else {
1515
+ /* No match, output a literal byte */
1516
+ //Tracevv((stderr,"%c", s.window[s.strstart]));
1517
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
1518
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
1519
+
1520
+ s.lookahead--;
1521
+ s.strstart++;
1522
+ }
1523
+ if (bflush) {
1524
+ /*** FLUSH_BLOCK(s, 0); ***/
1525
+ flush_block_only(s, false);
1526
+ if (s.strm.avail_out === 0) {
1527
+ return BS_NEED_MORE;
1528
+ }
1529
+ /***/
1530
+ }
1531
+ }
1532
+ s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
1533
+ if (flush === Z_FINISH) {
1534
+ /*** FLUSH_BLOCK(s, 1); ***/
1535
+ flush_block_only(s, true);
1536
+ if (s.strm.avail_out === 0) {
1537
+ return BS_FINISH_STARTED;
1538
+ }
1539
+ /***/
1540
+ return BS_FINISH_DONE;
1541
+ }
1542
+ if (s.last_lit) {
1543
+ /*** FLUSH_BLOCK(s, 0); ***/
1544
+ flush_block_only(s, false);
1545
+ if (s.strm.avail_out === 0) {
1546
+ return BS_NEED_MORE;
1547
+ }
1548
+ /***/
1549
+ }
1550
+ return BS_BLOCK_DONE;
1551
+ }
1552
+
1553
+ /* ===========================================================================
1554
+ * Same as above, but achieves better compression. We use a lazy
1555
+ * evaluation for matches: a match is finally adopted only if there is
1556
+ * no better match at the next window position.
1557
+ */
1558
+ function deflate_slow(s, flush) {
1559
+ var hash_head; /* head of hash chain */
1560
+ var bflush; /* set if current block must be flushed */
1561
+
1562
+ var max_insert;
1563
+
1564
+ /* Process the input block. */
1565
+ for (;;) {
1566
+ /* Make sure that we always have enough lookahead, except
1567
+ * at the end of the input file. We need MAX_MATCH bytes
1568
+ * for the next match, plus MIN_MATCH bytes to insert the
1569
+ * string following the next match.
1570
+ */
1571
+ if (s.lookahead < MIN_LOOKAHEAD) {
1572
+ fill_window(s);
1573
+ if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
1574
+ return BS_NEED_MORE;
1575
+ }
1576
+ if (s.lookahead === 0) { break; } /* flush the current block */
1577
+ }
1578
+
1579
+ /* Insert the string window[strstart .. strstart+2] in the
1580
+ * dictionary, and set hash_head to the head of the hash chain:
1581
+ */
1582
+ hash_head = 0/*NIL*/;
1583
+ if (s.lookahead >= MIN_MATCH) {
1584
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
1585
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
1586
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
1587
+ s.head[s.ins_h] = s.strstart;
1588
+ /***/
1589
+ }
1590
+
1591
+ /* Find the longest match, discarding those <= prev_length.
1592
+ */
1593
+ s.prev_length = s.match_length;
1594
+ s.prev_match = s.match_start;
1595
+ s.match_length = MIN_MATCH - 1;
1596
+
1597
+ if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
1598
+ s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
1599
+ /* To simplify the code, we prevent matches with the string
1600
+ * of window index 0 (in particular we have to avoid a match
1601
+ * of the string with itself at the start of the input file).
1602
+ */
1603
+ s.match_length = longest_match(s, hash_head);
1604
+ /* longest_match() sets match_start */
1605
+
1606
+ if (s.match_length <= 5 &&
1607
+ (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
1608
+
1609
+ /* If prev_match is also MIN_MATCH, match_start is garbage
1610
+ * but we will ignore the current match anyway.
1611
+ */
1612
+ s.match_length = MIN_MATCH - 1;
1613
+ }
1614
+ }
1615
+ /* If there was a match at the previous step and the current
1616
+ * match is not better, output the previous match:
1617
+ */
1618
+ if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
1619
+ max_insert = s.strstart + s.lookahead - MIN_MATCH;
1620
+ /* Do not insert strings in hash table beyond this. */
1621
+
1622
+ //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
1623
+
1624
+ /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
1625
+ s.prev_length - MIN_MATCH, bflush);***/
1626
+ bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
1627
+ /* Insert in hash table all strings up to the end of the match.
1628
+ * strstart-1 and strstart are already inserted. If there is not
1629
+ * enough lookahead, the last two strings are not inserted in
1630
+ * the hash table.
1631
+ */
1632
+ s.lookahead -= s.prev_length - 1;
1633
+ s.prev_length -= 2;
1634
+ do {
1635
+ if (++s.strstart <= max_insert) {
1636
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
1637
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
1638
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
1639
+ s.head[s.ins_h] = s.strstart;
1640
+ /***/
1641
+ }
1642
+ } while (--s.prev_length !== 0);
1643
+ s.match_available = 0;
1644
+ s.match_length = MIN_MATCH - 1;
1645
+ s.strstart++;
1646
+
1647
+ if (bflush) {
1648
+ /*** FLUSH_BLOCK(s, 0); ***/
1649
+ flush_block_only(s, false);
1650
+ if (s.strm.avail_out === 0) {
1651
+ return BS_NEED_MORE;
1652
+ }
1653
+ /***/
1654
+ }
1655
+
1656
+ } else if (s.match_available) {
1657
+ /* If there was no match at the previous position, output a
1658
+ * single literal. If there was a match but the current match
1659
+ * is longer, truncate the previous match to a single literal.
1660
+ */
1661
+ //Tracevv((stderr,"%c", s->window[s->strstart-1]));
1662
+ /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
1663
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
1664
+
1665
+ if (bflush) {
1666
+ /*** FLUSH_BLOCK_ONLY(s, 0) ***/
1667
+ flush_block_only(s, false);
1668
+ /***/
1669
+ }
1670
+ s.strstart++;
1671
+ s.lookahead--;
1672
+ if (s.strm.avail_out === 0) {
1673
+ return BS_NEED_MORE;
1674
+ }
1675
+ } else {
1676
+ /* There is no previous match to compare with, wait for
1677
+ * the next step to decide.
1678
+ */
1679
+ s.match_available = 1;
1680
+ s.strstart++;
1681
+ s.lookahead--;
1682
+ }
1683
+ }
1684
+ //Assert (flush != Z_NO_FLUSH, "no flush?");
1685
+ if (s.match_available) {
1686
+ //Tracevv((stderr,"%c", s->window[s->strstart-1]));
1687
+ /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
1688
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
1689
+
1690
+ s.match_available = 0;
1691
+ }
1692
+ s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
1693
+ if (flush === Z_FINISH) {
1694
+ /*** FLUSH_BLOCK(s, 1); ***/
1695
+ flush_block_only(s, true);
1696
+ if (s.strm.avail_out === 0) {
1697
+ return BS_FINISH_STARTED;
1698
+ }
1699
+ /***/
1700
+ return BS_FINISH_DONE;
1701
+ }
1702
+ if (s.last_lit) {
1703
+ /*** FLUSH_BLOCK(s, 0); ***/
1704
+ flush_block_only(s, false);
1705
+ if (s.strm.avail_out === 0) {
1706
+ return BS_NEED_MORE;
1707
+ }
1708
+ /***/
1709
+ }
1710
+
1711
+ return BS_BLOCK_DONE;
1712
+ }
1713
+
1714
+
1715
+ /* ===========================================================================
1716
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
1717
+ * one. Do not maintain a hash table. (It will be regenerated if this run of
1718
+ * deflate switches away from Z_RLE.)
1719
+ */
1720
+ function deflate_rle(s, flush) {
1721
+ var bflush; /* set if current block must be flushed */
1722
+ var prev; /* byte at distance one to match */
1723
+ var scan, strend; /* scan goes up to strend for length of run */
1724
+
1725
+ var _win = s.window;
1726
+
1727
+ for (;;) {
1728
+ /* Make sure that we always have enough lookahead, except
1729
+ * at the end of the input file. We need MAX_MATCH bytes
1730
+ * for the longest run, plus one for the unrolled loop.
1731
+ */
1732
+ if (s.lookahead <= MAX_MATCH) {
1733
+ fill_window(s);
1734
+ if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
1735
+ return BS_NEED_MORE;
1736
+ }
1737
+ if (s.lookahead === 0) { break; } /* flush the current block */
1738
+ }
1739
+
1740
+ /* See how many times the previous byte repeats */
1741
+ s.match_length = 0;
1742
+ if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
1743
+ scan = s.strstart - 1;
1744
+ prev = _win[scan];
1745
+ if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
1746
+ strend = s.strstart + MAX_MATCH;
1747
+ do {
1748
+ /*jshint noempty:false*/
1749
+ } while (prev === _win[++scan] && prev === _win[++scan] &&
1750
+ prev === _win[++scan] && prev === _win[++scan] &&
1751
+ prev === _win[++scan] && prev === _win[++scan] &&
1752
+ prev === _win[++scan] && prev === _win[++scan] &&
1753
+ scan < strend);
1754
+ s.match_length = MAX_MATCH - (strend - scan);
1755
+ if (s.match_length > s.lookahead) {
1756
+ s.match_length = s.lookahead;
1757
+ }
1758
+ }
1759
+ //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
1760
+ }
1761
+
1762
+ /* Emit match if have run of MIN_MATCH or longer, else emit literal */
1763
+ if (s.match_length >= MIN_MATCH) {
1764
+ //check_match(s, s.strstart, s.strstart - 1, s.match_length);
1765
+
1766
+ /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
1767
+ bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
1768
+
1769
+ s.lookahead -= s.match_length;
1770
+ s.strstart += s.match_length;
1771
+ s.match_length = 0;
1772
+ } else {
1773
+ /* No match, output a literal byte */
1774
+ //Tracevv((stderr,"%c", s->window[s->strstart]));
1775
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
1776
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
1777
+
1778
+ s.lookahead--;
1779
+ s.strstart++;
1780
+ }
1781
+ if (bflush) {
1782
+ /*** FLUSH_BLOCK(s, 0); ***/
1783
+ flush_block_only(s, false);
1784
+ if (s.strm.avail_out === 0) {
1785
+ return BS_NEED_MORE;
1786
+ }
1787
+ /***/
1788
+ }
1789
+ }
1790
+ s.insert = 0;
1791
+ if (flush === Z_FINISH) {
1792
+ /*** FLUSH_BLOCK(s, 1); ***/
1793
+ flush_block_only(s, true);
1794
+ if (s.strm.avail_out === 0) {
1795
+ return BS_FINISH_STARTED;
1796
+ }
1797
+ /***/
1798
+ return BS_FINISH_DONE;
1799
+ }
1800
+ if (s.last_lit) {
1801
+ /*** FLUSH_BLOCK(s, 0); ***/
1802
+ flush_block_only(s, false);
1803
+ if (s.strm.avail_out === 0) {
1804
+ return BS_NEED_MORE;
1805
+ }
1806
+ /***/
1807
+ }
1808
+ return BS_BLOCK_DONE;
1809
+ }
1810
+
1811
+ /* ===========================================================================
1812
+ * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.
1813
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
1814
+ */
1815
+ function deflate_huff(s, flush) {
1816
+ var bflush; /* set if current block must be flushed */
1817
+
1818
+ for (;;) {
1819
+ /* Make sure that we have a literal to write. */
1820
+ if (s.lookahead === 0) {
1821
+ fill_window(s);
1822
+ if (s.lookahead === 0) {
1823
+ if (flush === Z_NO_FLUSH) {
1824
+ return BS_NEED_MORE;
1825
+ }
1826
+ break; /* flush the current block */
1827
+ }
1828
+ }
1829
+
1830
+ /* Output a literal byte */
1831
+ s.match_length = 0;
1832
+ //Tracevv((stderr,"%c", s->window[s->strstart]));
1833
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
1834
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
1835
+ s.lookahead--;
1836
+ s.strstart++;
1837
+ if (bflush) {
1838
+ /*** FLUSH_BLOCK(s, 0); ***/
1839
+ flush_block_only(s, false);
1840
+ if (s.strm.avail_out === 0) {
1841
+ return BS_NEED_MORE;
1842
+ }
1843
+ /***/
1844
+ }
1845
+ }
1846
+ s.insert = 0;
1847
+ if (flush === Z_FINISH) {
1848
+ /*** FLUSH_BLOCK(s, 1); ***/
1849
+ flush_block_only(s, true);
1850
+ if (s.strm.avail_out === 0) {
1851
+ return BS_FINISH_STARTED;
1852
+ }
1853
+ /***/
1854
+ return BS_FINISH_DONE;
1855
+ }
1856
+ if (s.last_lit) {
1857
+ /*** FLUSH_BLOCK(s, 0); ***/
1858
+ flush_block_only(s, false);
1859
+ if (s.strm.avail_out === 0) {
1860
+ return BS_NEED_MORE;
1861
+ }
1862
+ /***/
1863
+ }
1864
+ return BS_BLOCK_DONE;
1865
+ }
1866
+
1867
+ /* Values for max_lazy_match, good_match and max_chain_length, depending on
1868
+ * the desired pack level (0..9). The values given below have been tuned to
1869
+ * exclude worst case performance for pathological files. Better values may be
1870
+ * found for specific files.
1871
+ */
1872
+ function Config(good_length, max_lazy, nice_length, max_chain, func) {
1873
+ this.good_length = good_length;
1874
+ this.max_lazy = max_lazy;
1875
+ this.nice_length = nice_length;
1876
+ this.max_chain = max_chain;
1877
+ this.func = func;
1878
+ }
1879
+
1880
+ var configuration_table;
1881
+
1882
+ configuration_table = [
1883
+ /* good lazy nice chain */
1884
+ new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */
1885
+ new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */
1886
+ new Config(4, 5, 16, 8, deflate_fast), /* 2 */
1887
+ new Config(4, 6, 32, 32, deflate_fast), /* 3 */
1888
+
1889
+ new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */
1890
+ new Config(8, 16, 32, 32, deflate_slow), /* 5 */
1891
+ new Config(8, 16, 128, 128, deflate_slow), /* 6 */
1892
+ new Config(8, 32, 128, 256, deflate_slow), /* 7 */
1893
+ new Config(32, 128, 258, 1024, deflate_slow), /* 8 */
1894
+ new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */
1895
+ ];
1896
+
1897
+
1898
+ /* ===========================================================================
1899
+ * Initialize the "longest match" routines for a new zlib stream
1900
+ */
1901
+ function lm_init(s) {
1902
+ s.window_size = 2 * s.w_size;
1903
+
1904
+ /*** CLEAR_HASH(s); ***/
1905
+ zero(s.head); // Fill with NIL (= 0);
1906
+
1907
+ /* Set the default configuration parameters:
1908
+ */
1909
+ s.max_lazy_match = configuration_table[s.level].max_lazy;
1910
+ s.good_match = configuration_table[s.level].good_length;
1911
+ s.nice_match = configuration_table[s.level].nice_length;
1912
+ s.max_chain_length = configuration_table[s.level].max_chain;
1913
+
1914
+ s.strstart = 0;
1915
+ s.block_start = 0;
1916
+ s.lookahead = 0;
1917
+ s.insert = 0;
1918
+ s.match_length = s.prev_length = MIN_MATCH - 1;
1919
+ s.match_available = 0;
1920
+ s.ins_h = 0;
1921
+ }
1922
+
1923
+
1924
+ function DeflateState() {
1925
+ this.strm = null; /* pointer back to this zlib stream */
1926
+ this.status = 0; /* as the name implies */
1927
+ this.pending_buf = null; /* output still pending */
1928
+ this.pending_buf_size = 0; /* size of pending_buf */
1929
+ this.pending_out = 0; /* next pending byte to output to the stream */
1930
+ this.pending = 0; /* nb of bytes in the pending buffer */
1931
+ this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */
1932
+ this.gzhead = null; /* gzip header information to write */
1933
+ this.gzindex = 0; /* where in extra, name, or comment */
1934
+ this.method = Z_DEFLATED; /* can only be DEFLATED */
1935
+ this.last_flush = -1; /* value of flush param for previous deflate call */
1936
+
1937
+ this.w_size = 0; /* LZ77 window size (32K by default) */
1938
+ this.w_bits = 0; /* log2(w_size) (8..16) */
1939
+ this.w_mask = 0; /* w_size - 1 */
1940
+
1941
+ this.window = null;
1942
+ /* Sliding window. Input bytes are read into the second half of the window,
1943
+ * and move to the first half later to keep a dictionary of at least wSize
1944
+ * bytes. With this organization, matches are limited to a distance of
1945
+ * wSize-MAX_MATCH bytes, but this ensures that IO is always
1946
+ * performed with a length multiple of the block size.
1947
+ */
1948
+
1949
+ this.window_size = 0;
1950
+ /* Actual size of window: 2*wSize, except when the user input buffer
1951
+ * is directly used as sliding window.
1952
+ */
1953
+
1954
+ this.prev = null;
1955
+ /* Link to older string with same hash index. To limit the size of this
1956
+ * array to 64K, this link is maintained only for the last 32K strings.
1957
+ * An index in this array is thus a window index modulo 32K.
1958
+ */
1959
+
1960
+ this.head = null; /* Heads of the hash chains or NIL. */
1961
+
1962
+ this.ins_h = 0; /* hash index of string to be inserted */
1963
+ this.hash_size = 0; /* number of elements in hash table */
1964
+ this.hash_bits = 0; /* log2(hash_size) */
1965
+ this.hash_mask = 0; /* hash_size-1 */
1966
+
1967
+ this.hash_shift = 0;
1968
+ /* Number of bits by which ins_h must be shifted at each input
1969
+ * step. It must be such that after MIN_MATCH steps, the oldest
1970
+ * byte no longer takes part in the hash key, that is:
1971
+ * hash_shift * MIN_MATCH >= hash_bits
1972
+ */
1973
+
1974
+ this.block_start = 0;
1975
+ /* Window position at the beginning of the current output block. Gets
1976
+ * negative when the window is moved backwards.
1977
+ */
1978
+
1979
+ this.match_length = 0; /* length of best match */
1980
+ this.prev_match = 0; /* previous match */
1981
+ this.match_available = 0; /* set if previous match exists */
1982
+ this.strstart = 0; /* start of string to insert */
1983
+ this.match_start = 0; /* start of matching string */
1984
+ this.lookahead = 0; /* number of valid bytes ahead in window */
1985
+
1986
+ this.prev_length = 0;
1987
+ /* Length of the best match at previous step. Matches not greater than this
1988
+ * are discarded. This is used in the lazy match evaluation.
1989
+ */
1990
+
1991
+ this.max_chain_length = 0;
1992
+ /* To speed up deflation, hash chains are never searched beyond this
1993
+ * length. A higher limit improves compression ratio but degrades the
1994
+ * speed.
1995
+ */
1996
+
1997
+ this.max_lazy_match = 0;
1998
+ /* Attempt to find a better match only when the current match is strictly
1999
+ * smaller than this value. This mechanism is used only for compression
2000
+ * levels >= 4.
2001
+ */
2002
+ // That's alias to max_lazy_match, don't use directly
2003
+ //this.max_insert_length = 0;
2004
+ /* Insert new strings in the hash table only if the match length is not
2005
+ * greater than this length. This saves time but degrades compression.
2006
+ * max_insert_length is used only for compression levels <= 3.
2007
+ */
2008
+
2009
+ this.level = 0; /* compression level (1..9) */
2010
+ this.strategy = 0; /* favor or force Huffman coding*/
2011
+
2012
+ this.good_match = 0;
2013
+ /* Use a faster search when the previous match is longer than this */
2014
+
2015
+ this.nice_match = 0; /* Stop searching when current match exceeds this */
2016
+
2017
+ /* used by trees.c: */
2018
+
2019
+ /* Didn't use ct_data typedef below to suppress compiler warning */
2020
+
2021
+ // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
2022
+ // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
2023
+ // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
2024
+
2025
+ // Use flat array of DOUBLE size, with interleaved fata,
2026
+ // because JS does not support effective
2027
+ this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);
2028
+ this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);
2029
+ this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);
2030
+ zero(this.dyn_ltree);
2031
+ zero(this.dyn_dtree);
2032
+ zero(this.bl_tree);
2033
+
2034
+ this.l_desc = null; /* desc. for literal tree */
2035
+ this.d_desc = null; /* desc. for distance tree */
2036
+ this.bl_desc = null; /* desc. for bit length tree */
2037
+
2038
+ //ush bl_count[MAX_BITS+1];
2039
+ this.bl_count = new utils.Buf16(MAX_BITS + 1);
2040
+ /* number of codes at each bit length for an optimal tree */
2041
+
2042
+ //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
2043
+ this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */
2044
+ zero(this.heap);
2045
+
2046
+ this.heap_len = 0; /* number of elements in the heap */
2047
+ this.heap_max = 0; /* element of largest frequency */
2048
+ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
2049
+ * The same heap array is used to build all trees.
2050
+ */
2051
+
2052
+ this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
2053
+ zero(this.depth);
2054
+ /* Depth of each subtree used as tie breaker for trees of equal frequency
2055
+ */
2056
+
2057
+ this.l_buf = 0; /* buffer index for literals or lengths */
2058
+
2059
+ this.lit_bufsize = 0;
2060
+ /* Size of match buffer for literals/lengths. There are 4 reasons for
2061
+ * limiting lit_bufsize to 64K:
2062
+ * - frequencies can be kept in 16 bit counters
2063
+ * - if compression is not successful for the first block, all input
2064
+ * data is still in the window so we can still emit a stored block even
2065
+ * when input comes from standard input. (This can also be done for
2066
+ * all blocks if lit_bufsize is not greater than 32K.)
2067
+ * - if compression is not successful for a file smaller than 64K, we can
2068
+ * even emit a stored file instead of a stored block (saving 5 bytes).
2069
+ * This is applicable only for zip (not gzip or zlib).
2070
+ * - creating new Huffman trees less frequently may not provide fast
2071
+ * adaptation to changes in the input data statistics. (Take for
2072
+ * example a binary file with poorly compressible code followed by
2073
+ * a highly compressible string table.) Smaller buffer sizes give
2074
+ * fast adaptation but have of course the overhead of transmitting
2075
+ * trees more frequently.
2076
+ * - I can't count above 4
2077
+ */
2078
+
2079
+ this.last_lit = 0; /* running index in l_buf */
2080
+
2081
+ this.d_buf = 0;
2082
+ /* Buffer index for distances. To simplify the code, d_buf and l_buf have
2083
+ * the same number of elements. To use different lengths, an extra flag
2084
+ * array would be necessary.
2085
+ */
2086
+
2087
+ this.opt_len = 0; /* bit length of current block with optimal trees */
2088
+ this.static_len = 0; /* bit length of current block with static trees */
2089
+ this.matches = 0; /* number of string matches in current block */
2090
+ this.insert = 0; /* bytes at end of window left to insert */
2091
+
2092
+
2093
+ this.bi_buf = 0;
2094
+ /* Output buffer. bits are inserted starting at the bottom (least
2095
+ * significant bits).
2096
+ */
2097
+ this.bi_valid = 0;
2098
+ /* Number of valid bits in bi_buf. All bits above the last valid bit
2099
+ * are always zero.
2100
+ */
2101
+
2102
+ // Used for window memory init. We safely ignore it for JS. That makes
2103
+ // sense only for pointers and memory check tools.
2104
+ //this.high_water = 0;
2105
+ /* High water mark offset in window for initialized bytes -- bytes above
2106
+ * this are set to zero in order to avoid memory check warnings when
2107
+ * longest match routines access bytes past the input. This is then
2108
+ * updated to the new high water mark.
2109
+ */
2110
+ }
2111
+
2112
+
2113
+ function deflateResetKeep(strm) {
2114
+ var s;
2115
+
2116
+ if (!strm || !strm.state) {
2117
+ return err(strm, Z_STREAM_ERROR);
2118
+ }
2119
+
2120
+ strm.total_in = strm.total_out = 0;
2121
+ strm.data_type = Z_UNKNOWN;
2122
+
2123
+ s = strm.state;
2124
+ s.pending = 0;
2125
+ s.pending_out = 0;
2126
+
2127
+ if (s.wrap < 0) {
2128
+ s.wrap = -s.wrap;
2129
+ /* was made negative by deflate(..., Z_FINISH); */
2130
+ }
2131
+ s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
2132
+ strm.adler = (s.wrap === 2) ?
2133
+ 0 // crc32(0, Z_NULL, 0)
2134
+ :
2135
+ 1; // adler32(0, Z_NULL, 0)
2136
+ s.last_flush = Z_NO_FLUSH;
2137
+ trees._tr_init(s);
2138
+ return Z_OK;
2139
+ }
2140
+
2141
+
2142
+ function deflateReset(strm) {
2143
+ var ret = deflateResetKeep(strm);
2144
+ if (ret === Z_OK) {
2145
+ lm_init(strm.state);
2146
+ }
2147
+ return ret;
2148
+ }
2149
+
2150
+
2151
+ function deflateSetHeader(strm, head) {
2152
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
2153
+ if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
2154
+ strm.state.gzhead = head;
2155
+ return Z_OK;
2156
+ }
2157
+
2158
+
2159
+ function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
2160
+ if (!strm) { // === Z_NULL
2161
+ return Z_STREAM_ERROR;
2162
+ }
2163
+ var wrap = 1;
2164
+
2165
+ if (level === Z_DEFAULT_COMPRESSION) {
2166
+ level = 6;
2167
+ }
2168
+
2169
+ if (windowBits < 0) { /* suppress zlib wrapper */
2170
+ wrap = 0;
2171
+ windowBits = -windowBits;
2172
+ }
2173
+
2174
+ else if (windowBits > 15) {
2175
+ wrap = 2; /* write gzip wrapper instead */
2176
+ windowBits -= 16;
2177
+ }
2178
+
2179
+
2180
+ if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
2181
+ windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
2182
+ strategy < 0 || strategy > Z_FIXED) {
2183
+ return err(strm, Z_STREAM_ERROR);
2184
+ }
2185
+
2186
+
2187
+ if (windowBits === 8) {
2188
+ windowBits = 9;
2189
+ }
2190
+ /* until 256-byte window bug fixed */
2191
+
2192
+ var s = new DeflateState();
2193
+
2194
+ strm.state = s;
2195
+ s.strm = strm;
2196
+
2197
+ s.wrap = wrap;
2198
+ s.gzhead = null;
2199
+ s.w_bits = windowBits;
2200
+ s.w_size = 1 << s.w_bits;
2201
+ s.w_mask = s.w_size - 1;
2202
+
2203
+ s.hash_bits = memLevel + 7;
2204
+ s.hash_size = 1 << s.hash_bits;
2205
+ s.hash_mask = s.hash_size - 1;
2206
+ s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
2207
+
2208
+ s.window = new utils.Buf8(s.w_size * 2);
2209
+ s.head = new utils.Buf16(s.hash_size);
2210
+ s.prev = new utils.Buf16(s.w_size);
2211
+
2212
+ // Don't need mem init magic for JS.
2213
+ //s.high_water = 0; /* nothing written to s->window yet */
2214
+
2215
+ s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
2216
+
2217
+ s.pending_buf_size = s.lit_bufsize * 4;
2218
+
2219
+ //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
2220
+ //s->pending_buf = (uchf *) overlay;
2221
+ s.pending_buf = new utils.Buf8(s.pending_buf_size);
2222
+
2223
+ // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
2224
+ //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
2225
+ s.d_buf = 1 * s.lit_bufsize;
2226
+
2227
+ //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
2228
+ s.l_buf = (1 + 2) * s.lit_bufsize;
2229
+
2230
+ s.level = level;
2231
+ s.strategy = strategy;
2232
+ s.method = method;
2233
+
2234
+ return deflateReset(strm);
2235
+ }
2236
+
2237
+ function deflateInit(strm, level) {
2238
+ return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
2239
+ }
2240
+
2241
+
2242
+ function deflate(strm, flush) {
2243
+ var old_flush, s;
2244
+ var beg, val; // for gzip header write only
2245
+
2246
+ if (!strm || !strm.state ||
2247
+ flush > Z_BLOCK || flush < 0) {
2248
+ return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
2249
+ }
2250
+
2251
+ s = strm.state;
2252
+
2253
+ if (!strm.output ||
2254
+ (!strm.input && strm.avail_in !== 0) ||
2255
+ (s.status === FINISH_STATE && flush !== Z_FINISH)) {
2256
+ return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
2257
+ }
2258
+
2259
+ s.strm = strm; /* just in case */
2260
+ old_flush = s.last_flush;
2261
+ s.last_flush = flush;
2262
+
2263
+ /* Write the header */
2264
+ if (s.status === INIT_STATE) {
2265
+
2266
+ if (s.wrap === 2) { // GZIP header
2267
+ strm.adler = 0; //crc32(0L, Z_NULL, 0);
2268
+ put_byte(s, 31);
2269
+ put_byte(s, 139);
2270
+ put_byte(s, 8);
2271
+ if (!s.gzhead) { // s->gzhead == Z_NULL
2272
+ put_byte(s, 0);
2273
+ put_byte(s, 0);
2274
+ put_byte(s, 0);
2275
+ put_byte(s, 0);
2276
+ put_byte(s, 0);
2277
+ put_byte(s, s.level === 9 ? 2 :
2278
+ (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
2279
+ 4 : 0));
2280
+ put_byte(s, OS_CODE);
2281
+ s.status = BUSY_STATE;
2282
+ }
2283
+ else {
2284
+ put_byte(s, (s.gzhead.text ? 1 : 0) +
2285
+ (s.gzhead.hcrc ? 2 : 0) +
2286
+ (!s.gzhead.extra ? 0 : 4) +
2287
+ (!s.gzhead.name ? 0 : 8) +
2288
+ (!s.gzhead.comment ? 0 : 16)
2289
+ );
2290
+ put_byte(s, s.gzhead.time & 0xff);
2291
+ put_byte(s, (s.gzhead.time >> 8) & 0xff);
2292
+ put_byte(s, (s.gzhead.time >> 16) & 0xff);
2293
+ put_byte(s, (s.gzhead.time >> 24) & 0xff);
2294
+ put_byte(s, s.level === 9 ? 2 :
2295
+ (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
2296
+ 4 : 0));
2297
+ put_byte(s, s.gzhead.os & 0xff);
2298
+ if (s.gzhead.extra && s.gzhead.extra.length) {
2299
+ put_byte(s, s.gzhead.extra.length & 0xff);
2300
+ put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
2301
+ }
2302
+ if (s.gzhead.hcrc) {
2303
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
2304
+ }
2305
+ s.gzindex = 0;
2306
+ s.status = EXTRA_STATE;
2307
+ }
2308
+ }
2309
+ else // DEFLATE header
2310
+ {
2311
+ var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
2312
+ var level_flags = -1;
2313
+
2314
+ if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
2315
+ level_flags = 0;
2316
+ } else if (s.level < 6) {
2317
+ level_flags = 1;
2318
+ } else if (s.level === 6) {
2319
+ level_flags = 2;
2320
+ } else {
2321
+ level_flags = 3;
2322
+ }
2323
+ header |= (level_flags << 6);
2324
+ if (s.strstart !== 0) { header |= PRESET_DICT; }
2325
+ header += 31 - (header % 31);
2326
+
2327
+ s.status = BUSY_STATE;
2328
+ putShortMSB(s, header);
2329
+
2330
+ /* Save the adler32 of the preset dictionary: */
2331
+ if (s.strstart !== 0) {
2332
+ putShortMSB(s, strm.adler >>> 16);
2333
+ putShortMSB(s, strm.adler & 0xffff);
2334
+ }
2335
+ strm.adler = 1; // adler32(0L, Z_NULL, 0);
2336
+ }
2337
+ }
2338
+
2339
+ //#ifdef GZIP
2340
+ if (s.status === EXTRA_STATE) {
2341
+ if (s.gzhead.extra/* != Z_NULL*/) {
2342
+ beg = s.pending; /* start of bytes to update crc */
2343
+
2344
+ while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
2345
+ if (s.pending === s.pending_buf_size) {
2346
+ if (s.gzhead.hcrc && s.pending > beg) {
2347
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2348
+ }
2349
+ flush_pending(strm);
2350
+ beg = s.pending;
2351
+ if (s.pending === s.pending_buf_size) {
2352
+ break;
2353
+ }
2354
+ }
2355
+ put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
2356
+ s.gzindex++;
2357
+ }
2358
+ if (s.gzhead.hcrc && s.pending > beg) {
2359
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2360
+ }
2361
+ if (s.gzindex === s.gzhead.extra.length) {
2362
+ s.gzindex = 0;
2363
+ s.status = NAME_STATE;
2364
+ }
2365
+ }
2366
+ else {
2367
+ s.status = NAME_STATE;
2368
+ }
2369
+ }
2370
+ if (s.status === NAME_STATE) {
2371
+ if (s.gzhead.name/* != Z_NULL*/) {
2372
+ beg = s.pending; /* start of bytes to update crc */
2373
+ //int val;
2374
+
2375
+ do {
2376
+ if (s.pending === s.pending_buf_size) {
2377
+ if (s.gzhead.hcrc && s.pending > beg) {
2378
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2379
+ }
2380
+ flush_pending(strm);
2381
+ beg = s.pending;
2382
+ if (s.pending === s.pending_buf_size) {
2383
+ val = 1;
2384
+ break;
2385
+ }
2386
+ }
2387
+ // JS specific: little magic to add zero terminator to end of string
2388
+ if (s.gzindex < s.gzhead.name.length) {
2389
+ val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
2390
+ } else {
2391
+ val = 0;
2392
+ }
2393
+ put_byte(s, val);
2394
+ } while (val !== 0);
2395
+
2396
+ if (s.gzhead.hcrc && s.pending > beg) {
2397
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2398
+ }
2399
+ if (val === 0) {
2400
+ s.gzindex = 0;
2401
+ s.status = COMMENT_STATE;
2402
+ }
2403
+ }
2404
+ else {
2405
+ s.status = COMMENT_STATE;
2406
+ }
2407
+ }
2408
+ if (s.status === COMMENT_STATE) {
2409
+ if (s.gzhead.comment/* != Z_NULL*/) {
2410
+ beg = s.pending; /* start of bytes to update crc */
2411
+ //int val;
2412
+
2413
+ do {
2414
+ if (s.pending === s.pending_buf_size) {
2415
+ if (s.gzhead.hcrc && s.pending > beg) {
2416
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2417
+ }
2418
+ flush_pending(strm);
2419
+ beg = s.pending;
2420
+ if (s.pending === s.pending_buf_size) {
2421
+ val = 1;
2422
+ break;
2423
+ }
2424
+ }
2425
+ // JS specific: little magic to add zero terminator to end of string
2426
+ if (s.gzindex < s.gzhead.comment.length) {
2427
+ val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
2428
+ } else {
2429
+ val = 0;
2430
+ }
2431
+ put_byte(s, val);
2432
+ } while (val !== 0);
2433
+
2434
+ if (s.gzhead.hcrc && s.pending > beg) {
2435
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
2436
+ }
2437
+ if (val === 0) {
2438
+ s.status = HCRC_STATE;
2439
+ }
2440
+ }
2441
+ else {
2442
+ s.status = HCRC_STATE;
2443
+ }
2444
+ }
2445
+ if (s.status === HCRC_STATE) {
2446
+ if (s.gzhead.hcrc) {
2447
+ if (s.pending + 2 > s.pending_buf_size) {
2448
+ flush_pending(strm);
2449
+ }
2450
+ if (s.pending + 2 <= s.pending_buf_size) {
2451
+ put_byte(s, strm.adler & 0xff);
2452
+ put_byte(s, (strm.adler >> 8) & 0xff);
2453
+ strm.adler = 0; //crc32(0L, Z_NULL, 0);
2454
+ s.status = BUSY_STATE;
2455
+ }
2456
+ }
2457
+ else {
2458
+ s.status = BUSY_STATE;
2459
+ }
2460
+ }
2461
+ //#endif
2462
+
2463
+ /* Flush as much pending output as possible */
2464
+ if (s.pending !== 0) {
2465
+ flush_pending(strm);
2466
+ if (strm.avail_out === 0) {
2467
+ /* Since avail_out is 0, deflate will be called again with
2468
+ * more output space, but possibly with both pending and
2469
+ * avail_in equal to zero. There won't be anything to do,
2470
+ * but this is not an error situation so make sure we
2471
+ * return OK instead of BUF_ERROR at next call of deflate:
2472
+ */
2473
+ s.last_flush = -1;
2474
+ return Z_OK;
2475
+ }
2476
+
2477
+ /* Make sure there is something to do and avoid duplicate consecutive
2478
+ * flushes. For repeated and useless calls with Z_FINISH, we keep
2479
+ * returning Z_STREAM_END instead of Z_BUF_ERROR.
2480
+ */
2481
+ } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
2482
+ flush !== Z_FINISH) {
2483
+ return err(strm, Z_BUF_ERROR);
2484
+ }
2485
+
2486
+ /* User must not provide more input after the first FINISH: */
2487
+ if (s.status === FINISH_STATE && strm.avail_in !== 0) {
2488
+ return err(strm, Z_BUF_ERROR);
2489
+ }
2490
+
2491
+ /* Start a new block or continue the current one.
2492
+ */
2493
+ if (strm.avail_in !== 0 || s.lookahead !== 0 ||
2494
+ (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
2495
+ var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
2496
+ (s.strategy === Z_RLE ? deflate_rle(s, flush) :
2497
+ configuration_table[s.level].func(s, flush));
2498
+
2499
+ if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
2500
+ s.status = FINISH_STATE;
2501
+ }
2502
+ if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
2503
+ if (strm.avail_out === 0) {
2504
+ s.last_flush = -1;
2505
+ /* avoid BUF_ERROR next call, see above */
2506
+ }
2507
+ return Z_OK;
2508
+ /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
2509
+ * of deflate should use the same flush parameter to make sure
2510
+ * that the flush is complete. So we don't have to output an
2511
+ * empty block here, this will be done at next call. This also
2512
+ * ensures that for a very small output buffer, we emit at most
2513
+ * one empty block.
2514
+ */
2515
+ }
2516
+ if (bstate === BS_BLOCK_DONE) {
2517
+ if (flush === Z_PARTIAL_FLUSH) {
2518
+ trees._tr_align(s);
2519
+ }
2520
+ else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
2521
+
2522
+ trees._tr_stored_block(s, 0, 0, false);
2523
+ /* For a full flush, this empty block will be recognized
2524
+ * as a special marker by inflate_sync().
2525
+ */
2526
+ if (flush === Z_FULL_FLUSH) {
2527
+ /*** CLEAR_HASH(s); ***/ /* forget history */
2528
+ zero(s.head); // Fill with NIL (= 0);
2529
+
2530
+ if (s.lookahead === 0) {
2531
+ s.strstart = 0;
2532
+ s.block_start = 0;
2533
+ s.insert = 0;
2534
+ }
2535
+ }
2536
+ }
2537
+ flush_pending(strm);
2538
+ if (strm.avail_out === 0) {
2539
+ s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
2540
+ return Z_OK;
2541
+ }
2542
+ }
2543
+ }
2544
+ //Assert(strm->avail_out > 0, "bug2");
2545
+ //if (strm.avail_out <= 0) { throw new Error("bug2");}
2546
+
2547
+ if (flush !== Z_FINISH) { return Z_OK; }
2548
+ if (s.wrap <= 0) { return Z_STREAM_END; }
2549
+
2550
+ /* Write the trailer */
2551
+ if (s.wrap === 2) {
2552
+ put_byte(s, strm.adler & 0xff);
2553
+ put_byte(s, (strm.adler >> 8) & 0xff);
2554
+ put_byte(s, (strm.adler >> 16) & 0xff);
2555
+ put_byte(s, (strm.adler >> 24) & 0xff);
2556
+ put_byte(s, strm.total_in & 0xff);
2557
+ put_byte(s, (strm.total_in >> 8) & 0xff);
2558
+ put_byte(s, (strm.total_in >> 16) & 0xff);
2559
+ put_byte(s, (strm.total_in >> 24) & 0xff);
2560
+ }
2561
+ else
2562
+ {
2563
+ putShortMSB(s, strm.adler >>> 16);
2564
+ putShortMSB(s, strm.adler & 0xffff);
2565
+ }
2566
+
2567
+ flush_pending(strm);
2568
+ /* If avail_out is zero, the application will call deflate again
2569
+ * to flush the rest.
2570
+ */
2571
+ if (s.wrap > 0) { s.wrap = -s.wrap; }
2572
+ /* write the trailer only once! */
2573
+ return s.pending !== 0 ? Z_OK : Z_STREAM_END;
2574
+ }
2575
+
2576
+ function deflateEnd(strm) {
2577
+ var status;
2578
+
2579
+ if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
2580
+ return Z_STREAM_ERROR;
2581
+ }
2582
+
2583
+ status = strm.state.status;
2584
+ if (status !== INIT_STATE &&
2585
+ status !== EXTRA_STATE &&
2586
+ status !== NAME_STATE &&
2587
+ status !== COMMENT_STATE &&
2588
+ status !== HCRC_STATE &&
2589
+ status !== BUSY_STATE &&
2590
+ status !== FINISH_STATE
2591
+ ) {
2592
+ return err(strm, Z_STREAM_ERROR);
2593
+ }
2594
+
2595
+ strm.state = null;
2596
+
2597
+ return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
2598
+ }
2599
+
2600
+
2601
+ /* =========================================================================
2602
+ * Initializes the compression dictionary from the given byte
2603
+ * sequence without producing any compressed output.
2604
+ */
2605
+ function deflateSetDictionary(strm, dictionary) {
2606
+ var dictLength = dictionary.length;
2607
+
2608
+ var s;
2609
+ var str, n;
2610
+ var wrap;
2611
+ var avail;
2612
+ var next;
2613
+ var input;
2614
+ var tmpDict;
2615
+
2616
+ if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
2617
+ return Z_STREAM_ERROR;
2618
+ }
2619
+
2620
+ s = strm.state;
2621
+ wrap = s.wrap;
2622
+
2623
+ if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
2624
+ return Z_STREAM_ERROR;
2625
+ }
2626
+
2627
+ /* when using zlib wrappers, compute Adler-32 for provided dictionary */
2628
+ if (wrap === 1) {
2629
+ /* adler32(strm->adler, dictionary, dictLength); */
2630
+ strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
2631
+ }
2632
+
2633
+ s.wrap = 0; /* avoid computing Adler-32 in read_buf */
2634
+
2635
+ /* if dictionary would fill window, just replace the history */
2636
+ if (dictLength >= s.w_size) {
2637
+ if (wrap === 0) { /* already empty otherwise */
2638
+ /*** CLEAR_HASH(s); ***/
2639
+ zero(s.head); // Fill with NIL (= 0);
2640
+ s.strstart = 0;
2641
+ s.block_start = 0;
2642
+ s.insert = 0;
2643
+ }
2644
+ /* use the tail */
2645
+ // dictionary = dictionary.slice(dictLength - s.w_size);
2646
+ tmpDict = new utils.Buf8(s.w_size);
2647
+ utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
2648
+ dictionary = tmpDict;
2649
+ dictLength = s.w_size;
2650
+ }
2651
+ /* insert dictionary into window and hash */
2652
+ avail = strm.avail_in;
2653
+ next = strm.next_in;
2654
+ input = strm.input;
2655
+ strm.avail_in = dictLength;
2656
+ strm.next_in = 0;
2657
+ strm.input = dictionary;
2658
+ fill_window(s);
2659
+ while (s.lookahead >= MIN_MATCH) {
2660
+ str = s.strstart;
2661
+ n = s.lookahead - (MIN_MATCH - 1);
2662
+ do {
2663
+ /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
2664
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
2665
+
2666
+ s.prev[str & s.w_mask] = s.head[s.ins_h];
2667
+
2668
+ s.head[s.ins_h] = str;
2669
+ str++;
2670
+ } while (--n);
2671
+ s.strstart = str;
2672
+ s.lookahead = MIN_MATCH - 1;
2673
+ fill_window(s);
2674
+ }
2675
+ s.strstart += s.lookahead;
2676
+ s.block_start = s.strstart;
2677
+ s.insert = s.lookahead;
2678
+ s.lookahead = 0;
2679
+ s.match_length = s.prev_length = MIN_MATCH - 1;
2680
+ s.match_available = 0;
2681
+ strm.next_in = next;
2682
+ strm.input = input;
2683
+ strm.avail_in = avail;
2684
+ s.wrap = wrap;
2685
+ return Z_OK;
2686
+ }
2687
+
2688
+
2689
+ exports.deflateInit = deflateInit;
2690
+ exports.deflateInit2 = deflateInit2;
2691
+ exports.deflateReset = deflateReset;
2692
+ exports.deflateResetKeep = deflateResetKeep;
2693
+ exports.deflateSetHeader = deflateSetHeader;
2694
+ exports.deflate = deflate;
2695
+ exports.deflateEnd = deflateEnd;
2696
+ exports.deflateSetDictionary = deflateSetDictionary;
2697
+ exports.deflateInfo = 'pako deflate (from Nodeca project)';
2698
+
2699
+ /* Not implemented
2700
+ exports.deflateBound = deflateBound;
2701
+ exports.deflateCopy = deflateCopy;
2702
+ exports.deflateParams = deflateParams;
2703
+ exports.deflatePending = deflatePending;
2704
+ exports.deflatePrime = deflatePrime;
2705
+ exports.deflateTune = deflateTune;
2706
+ */
2707
+
2708
+ },{"../utils/common":5,"./adler32":7,"./crc32":8,"./messages":10,"./trees":11}],10:[function(require,module,exports){
2709
+ 'use strict';
2710
+
2711
+ module.exports = {
2712
+ 2: 'need dictionary', /* Z_NEED_DICT 2 */
2713
+ 1: 'stream end', /* Z_STREAM_END 1 */
2714
+ 0: '', /* Z_OK 0 */
2715
+ '-1': 'file error', /* Z_ERRNO (-1) */
2716
+ '-2': 'stream error', /* Z_STREAM_ERROR (-2) */
2717
+ '-3': 'data error', /* Z_DATA_ERROR (-3) */
2718
+ '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */
2719
+ '-5': 'buffer error', /* Z_BUF_ERROR (-5) */
2720
+ '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */
2721
+ };
2722
+
2723
+ },{}],11:[function(require,module,exports){
2724
+ 'use strict';
2725
+
2726
+
2727
+ var utils = require('../utils/common');
2728
+
2729
+ /* Public constants ==========================================================*/
2730
+ /* ===========================================================================*/
2731
+
2732
+
2733
+ //var Z_FILTERED = 1;
2734
+ //var Z_HUFFMAN_ONLY = 2;
2735
+ //var Z_RLE = 3;
2736
+ var Z_FIXED = 4;
2737
+ //var Z_DEFAULT_STRATEGY = 0;
2738
+
2739
+ /* Possible values of the data_type field (though see inflate()) */
2740
+ var Z_BINARY = 0;
2741
+ var Z_TEXT = 1;
2742
+ //var Z_ASCII = 1; // = Z_TEXT
2743
+ var Z_UNKNOWN = 2;
2744
+
2745
+ /*============================================================================*/
2746
+
2747
+
2748
+ function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
2749
+
2750
+ // From zutil.h
2751
+
2752
+ var STORED_BLOCK = 0;
2753
+ var STATIC_TREES = 1;
2754
+ var DYN_TREES = 2;
2755
+ /* The three kinds of block type */
2756
+
2757
+ var MIN_MATCH = 3;
2758
+ var MAX_MATCH = 258;
2759
+ /* The minimum and maximum match lengths */
2760
+
2761
+ // From deflate.h
2762
+ /* ===========================================================================
2763
+ * Internal compression state.
2764
+ */
2765
+
2766
+ var LENGTH_CODES = 29;
2767
+ /* number of length codes, not counting the special END_BLOCK code */
2768
+
2769
+ var LITERALS = 256;
2770
+ /* number of literal bytes 0..255 */
2771
+
2772
+ var L_CODES = LITERALS + 1 + LENGTH_CODES;
2773
+ /* number of Literal or Length codes, including the END_BLOCK code */
2774
+
2775
+ var D_CODES = 30;
2776
+ /* number of distance codes */
2777
+
2778
+ var BL_CODES = 19;
2779
+ /* number of codes used to transfer the bit lengths */
2780
+
2781
+ var HEAP_SIZE = 2 * L_CODES + 1;
2782
+ /* maximum heap size */
2783
+
2784
+ var MAX_BITS = 15;
2785
+ /* All codes must not exceed MAX_BITS bits */
2786
+
2787
+ var Buf_size = 16;
2788
+ /* size of bit buffer in bi_buf */
2789
+
2790
+
2791
+ /* ===========================================================================
2792
+ * Constants
2793
+ */
2794
+
2795
+ var MAX_BL_BITS = 7;
2796
+ /* Bit length codes must not exceed MAX_BL_BITS bits */
2797
+
2798
+ var END_BLOCK = 256;
2799
+ /* end of block literal code */
2800
+
2801
+ var REP_3_6 = 16;
2802
+ /* repeat previous bit length 3-6 times (2 bits of repeat count) */
2803
+
2804
+ var REPZ_3_10 = 17;
2805
+ /* repeat a zero length 3-10 times (3 bits of repeat count) */
2806
+
2807
+ var REPZ_11_138 = 18;
2808
+ /* repeat a zero length 11-138 times (7 bits of repeat count) */
2809
+
2810
+ /* eslint-disable comma-spacing,array-bracket-spacing */
2811
+ var extra_lbits = /* extra bits for each length code */
2812
+ [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
2813
+
2814
+ var extra_dbits = /* extra bits for each distance code */
2815
+ [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
2816
+
2817
+ var extra_blbits = /* extra bits for each bit length code */
2818
+ [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
2819
+
2820
+ var bl_order =
2821
+ [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
2822
+ /* eslint-enable comma-spacing,array-bracket-spacing */
2823
+
2824
+ /* The lengths of the bit length codes are sent in order of decreasing
2825
+ * probability, to avoid transmitting the lengths for unused bit length codes.
2826
+ */
2827
+
2828
+ /* ===========================================================================
2829
+ * Local data. These are initialized only once.
2830
+ */
2831
+
2832
+ // We pre-fill arrays with 0 to avoid uninitialized gaps
2833
+
2834
+ var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
2835
+
2836
+ // !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
2837
+ var static_ltree = new Array((L_CODES + 2) * 2);
2838
+ zero(static_ltree);
2839
+ /* The static literal tree. Since the bit lengths are imposed, there is no
2840
+ * need for the L_CODES extra codes used during heap construction. However
2841
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
2842
+ * below).
2843
+ */
2844
+
2845
+ var static_dtree = new Array(D_CODES * 2);
2846
+ zero(static_dtree);
2847
+ /* The static distance tree. (Actually a trivial tree since all codes use
2848
+ * 5 bits.)
2849
+ */
2850
+
2851
+ var _dist_code = new Array(DIST_CODE_LEN);
2852
+ zero(_dist_code);
2853
+ /* Distance codes. The first 256 values correspond to the distances
2854
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
2855
+ * the 15 bit distances.
2856
+ */
2857
+
2858
+ var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);
2859
+ zero(_length_code);
2860
+ /* length code for each normalized match length (0 == MIN_MATCH) */
2861
+
2862
+ var base_length = new Array(LENGTH_CODES);
2863
+ zero(base_length);
2864
+ /* First normalized length for each code (0 = MIN_MATCH) */
2865
+
2866
+ var base_dist = new Array(D_CODES);
2867
+ zero(base_dist);
2868
+ /* First normalized distance for each code (0 = distance of 1) */
2869
+
2870
+
2871
+ function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
2872
+
2873
+ this.static_tree = static_tree; /* static tree or NULL */
2874
+ this.extra_bits = extra_bits; /* extra bits for each code or NULL */
2875
+ this.extra_base = extra_base; /* base index for extra_bits */
2876
+ this.elems = elems; /* max number of elements in the tree */
2877
+ this.max_length = max_length; /* max bit length for the codes */
2878
+
2879
+ // show if `static_tree` has data or dummy - needed for monomorphic objects
2880
+ this.has_stree = static_tree && static_tree.length;
2881
+ }
2882
+
2883
+
2884
+ var static_l_desc;
2885
+ var static_d_desc;
2886
+ var static_bl_desc;
2887
+
2888
+
2889
+ function TreeDesc(dyn_tree, stat_desc) {
2890
+ this.dyn_tree = dyn_tree; /* the dynamic tree */
2891
+ this.max_code = 0; /* largest code with non zero frequency */
2892
+ this.stat_desc = stat_desc; /* the corresponding static tree */
2893
+ }
2894
+
2895
+
2896
+
2897
+ function d_code(dist) {
2898
+ return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
2899
+ }
2900
+
2901
+
2902
+ /* ===========================================================================
2903
+ * Output a short LSB first on the stream.
2904
+ * IN assertion: there is enough room in pendingBuf.
2905
+ */
2906
+ function put_short(s, w) {
2907
+ // put_byte(s, (uch)((w) & 0xff));
2908
+ // put_byte(s, (uch)((ush)(w) >> 8));
2909
+ s.pending_buf[s.pending++] = (w) & 0xff;
2910
+ s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
2911
+ }
2912
+
2913
+
2914
+ /* ===========================================================================
2915
+ * Send a value on a given number of bits.
2916
+ * IN assertion: length <= 16 and value fits in length bits.
2917
+ */
2918
+ function send_bits(s, value, length) {
2919
+ if (s.bi_valid > (Buf_size - length)) {
2920
+ s.bi_buf |= (value << s.bi_valid) & 0xffff;
2921
+ put_short(s, s.bi_buf);
2922
+ s.bi_buf = value >> (Buf_size - s.bi_valid);
2923
+ s.bi_valid += length - Buf_size;
2924
+ } else {
2925
+ s.bi_buf |= (value << s.bi_valid) & 0xffff;
2926
+ s.bi_valid += length;
2927
+ }
2928
+ }
2929
+
2930
+
2931
+ function send_code(s, c, tree) {
2932
+ send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
2933
+ }
2934
+
2935
+
2936
+ /* ===========================================================================
2937
+ * Reverse the first len bits of a code, using straightforward code (a faster
2938
+ * method would use a table)
2939
+ * IN assertion: 1 <= len <= 15
2940
+ */
2941
+ function bi_reverse(code, len) {
2942
+ var res = 0;
2943
+ do {
2944
+ res |= code & 1;
2945
+ code >>>= 1;
2946
+ res <<= 1;
2947
+ } while (--len > 0);
2948
+ return res >>> 1;
2949
+ }
2950
+
2951
+
2952
+ /* ===========================================================================
2953
+ * Flush the bit buffer, keeping at most 7 bits in it.
2954
+ */
2955
+ function bi_flush(s) {
2956
+ if (s.bi_valid === 16) {
2957
+ put_short(s, s.bi_buf);
2958
+ s.bi_buf = 0;
2959
+ s.bi_valid = 0;
2960
+
2961
+ } else if (s.bi_valid >= 8) {
2962
+ s.pending_buf[s.pending++] = s.bi_buf & 0xff;
2963
+ s.bi_buf >>= 8;
2964
+ s.bi_valid -= 8;
2965
+ }
2966
+ }
2967
+
2968
+
2969
+ /* ===========================================================================
2970
+ * Compute the optimal bit lengths for a tree and update the total bit length
2971
+ * for the current block.
2972
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
2973
+ * above are the tree nodes sorted by increasing frequency.
2974
+ * OUT assertions: the field len is set to the optimal bit length, the
2975
+ * array bl_count contains the frequencies for each bit length.
2976
+ * The length opt_len is updated; static_len is also updated if stree is
2977
+ * not null.
2978
+ */
2979
+ function gen_bitlen(s, desc)
2980
+ // deflate_state *s;
2981
+ // tree_desc *desc; /* the tree descriptor */
2982
+ {
2983
+ var tree = desc.dyn_tree;
2984
+ var max_code = desc.max_code;
2985
+ var stree = desc.stat_desc.static_tree;
2986
+ var has_stree = desc.stat_desc.has_stree;
2987
+ var extra = desc.stat_desc.extra_bits;
2988
+ var base = desc.stat_desc.extra_base;
2989
+ var max_length = desc.stat_desc.max_length;
2990
+ var h; /* heap index */
2991
+ var n, m; /* iterate over the tree elements */
2992
+ var bits; /* bit length */
2993
+ var xbits; /* extra bits */
2994
+ var f; /* frequency */
2995
+ var overflow = 0; /* number of elements with bit length too large */
2996
+
2997
+ for (bits = 0; bits <= MAX_BITS; bits++) {
2998
+ s.bl_count[bits] = 0;
2999
+ }
3000
+
3001
+ /* In a first pass, compute the optimal bit lengths (which may
3002
+ * overflow in the case of the bit length tree).
3003
+ */
3004
+ tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
3005
+
3006
+ for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
3007
+ n = s.heap[h];
3008
+ bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
3009
+ if (bits > max_length) {
3010
+ bits = max_length;
3011
+ overflow++;
3012
+ }
3013
+ tree[n * 2 + 1]/*.Len*/ = bits;
3014
+ /* We overwrite tree[n].Dad which is no longer needed */
3015
+
3016
+ if (n > max_code) { continue; } /* not a leaf node */
3017
+
3018
+ s.bl_count[bits]++;
3019
+ xbits = 0;
3020
+ if (n >= base) {
3021
+ xbits = extra[n - base];
3022
+ }
3023
+ f = tree[n * 2]/*.Freq*/;
3024
+ s.opt_len += f * (bits + xbits);
3025
+ if (has_stree) {
3026
+ s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
3027
+ }
3028
+ }
3029
+ if (overflow === 0) { return; }
3030
+
3031
+ // Trace((stderr,"\nbit length overflow\n"));
3032
+ /* This happens for example on obj2 and pic of the Calgary corpus */
3033
+
3034
+ /* Find the first bit length which could increase: */
3035
+ do {
3036
+ bits = max_length - 1;
3037
+ while (s.bl_count[bits] === 0) { bits--; }
3038
+ s.bl_count[bits]--; /* move one leaf down the tree */
3039
+ s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
3040
+ s.bl_count[max_length]--;
3041
+ /* The brother of the overflow item also moves one step up,
3042
+ * but this does not affect bl_count[max_length]
3043
+ */
3044
+ overflow -= 2;
3045
+ } while (overflow > 0);
3046
+
3047
+ /* Now recompute all bit lengths, scanning in increasing frequency.
3048
+ * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
3049
+ * lengths instead of fixing only the wrong ones. This idea is taken
3050
+ * from 'ar' written by Haruhiko Okumura.)
3051
+ */
3052
+ for (bits = max_length; bits !== 0; bits--) {
3053
+ n = s.bl_count[bits];
3054
+ while (n !== 0) {
3055
+ m = s.heap[--h];
3056
+ if (m > max_code) { continue; }
3057
+ if (tree[m * 2 + 1]/*.Len*/ !== bits) {
3058
+ // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
3059
+ s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
3060
+ tree[m * 2 + 1]/*.Len*/ = bits;
3061
+ }
3062
+ n--;
3063
+ }
3064
+ }
3065
+ }
3066
+
3067
+
3068
+ /* ===========================================================================
3069
+ * Generate the codes for a given tree and bit counts (which need not be
3070
+ * optimal).
3071
+ * IN assertion: the array bl_count contains the bit length statistics for
3072
+ * the given tree and the field len is set for all tree elements.
3073
+ * OUT assertion: the field code is set for all tree elements of non
3074
+ * zero code length.
3075
+ */
3076
+ function gen_codes(tree, max_code, bl_count)
3077
+ // ct_data *tree; /* the tree to decorate */
3078
+ // int max_code; /* largest code with non zero frequency */
3079
+ // ushf *bl_count; /* number of codes at each bit length */
3080
+ {
3081
+ var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
3082
+ var code = 0; /* running code value */
3083
+ var bits; /* bit index */
3084
+ var n; /* code index */
3085
+
3086
+ /* The distribution counts are first used to generate the code values
3087
+ * without bit reversal.
3088
+ */
3089
+ for (bits = 1; bits <= MAX_BITS; bits++) {
3090
+ next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
3091
+ }
3092
+ /* Check that the bit counts in bl_count are consistent. The last code
3093
+ * must be all ones.
3094
+ */
3095
+ //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
3096
+ // "inconsistent bit counts");
3097
+ //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
3098
+
3099
+ for (n = 0; n <= max_code; n++) {
3100
+ var len = tree[n * 2 + 1]/*.Len*/;
3101
+ if (len === 0) { continue; }
3102
+ /* Now reverse the bits */
3103
+ tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
3104
+
3105
+ //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
3106
+ // n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
3107
+ }
3108
+ }
3109
+
3110
+
3111
+ /* ===========================================================================
3112
+ * Initialize the various 'constant' tables.
3113
+ */
3114
+ function tr_static_init() {
3115
+ var n; /* iterates over tree elements */
3116
+ var bits; /* bit counter */
3117
+ var length; /* length value */
3118
+ var code; /* code value */
3119
+ var dist; /* distance index */
3120
+ var bl_count = new Array(MAX_BITS + 1);
3121
+ /* number of codes at each bit length for an optimal tree */
3122
+
3123
+ // do check in _tr_init()
3124
+ //if (static_init_done) return;
3125
+
3126
+ /* For some embedded targets, global variables are not initialized: */
3127
+ /*#ifdef NO_INIT_GLOBAL_POINTERS
3128
+ static_l_desc.static_tree = static_ltree;
3129
+ static_l_desc.extra_bits = extra_lbits;
3130
+ static_d_desc.static_tree = static_dtree;
3131
+ static_d_desc.extra_bits = extra_dbits;
3132
+ static_bl_desc.extra_bits = extra_blbits;
3133
+ #endif*/
3134
+
3135
+ /* Initialize the mapping length (0..255) -> length code (0..28) */
3136
+ length = 0;
3137
+ for (code = 0; code < LENGTH_CODES - 1; code++) {
3138
+ base_length[code] = length;
3139
+ for (n = 0; n < (1 << extra_lbits[code]); n++) {
3140
+ _length_code[length++] = code;
3141
+ }
3142
+ }
3143
+ //Assert (length == 256, "tr_static_init: length != 256");
3144
+ /* Note that the length 255 (match length 258) can be represented
3145
+ * in two different ways: code 284 + 5 bits or code 285, so we
3146
+ * overwrite length_code[255] to use the best encoding:
3147
+ */
3148
+ _length_code[length - 1] = code;
3149
+
3150
+ /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
3151
+ dist = 0;
3152
+ for (code = 0; code < 16; code++) {
3153
+ base_dist[code] = dist;
3154
+ for (n = 0; n < (1 << extra_dbits[code]); n++) {
3155
+ _dist_code[dist++] = code;
3156
+ }
3157
+ }
3158
+ //Assert (dist == 256, "tr_static_init: dist != 256");
3159
+ dist >>= 7; /* from now on, all distances are divided by 128 */
3160
+ for (; code < D_CODES; code++) {
3161
+ base_dist[code] = dist << 7;
3162
+ for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
3163
+ _dist_code[256 + dist++] = code;
3164
+ }
3165
+ }
3166
+ //Assert (dist == 256, "tr_static_init: 256+dist != 512");
3167
+
3168
+ /* Construct the codes of the static literal tree */
3169
+ for (bits = 0; bits <= MAX_BITS; bits++) {
3170
+ bl_count[bits] = 0;
3171
+ }
3172
+
3173
+ n = 0;
3174
+ while (n <= 143) {
3175
+ static_ltree[n * 2 + 1]/*.Len*/ = 8;
3176
+ n++;
3177
+ bl_count[8]++;
3178
+ }
3179
+ while (n <= 255) {
3180
+ static_ltree[n * 2 + 1]/*.Len*/ = 9;
3181
+ n++;
3182
+ bl_count[9]++;
3183
+ }
3184
+ while (n <= 279) {
3185
+ static_ltree[n * 2 + 1]/*.Len*/ = 7;
3186
+ n++;
3187
+ bl_count[7]++;
3188
+ }
3189
+ while (n <= 287) {
3190
+ static_ltree[n * 2 + 1]/*.Len*/ = 8;
3191
+ n++;
3192
+ bl_count[8]++;
3193
+ }
3194
+ /* Codes 286 and 287 do not exist, but we must include them in the
3195
+ * tree construction to get a canonical Huffman tree (longest code
3196
+ * all ones)
3197
+ */
3198
+ gen_codes(static_ltree, L_CODES + 1, bl_count);
3199
+
3200
+ /* The static distance tree is trivial: */
3201
+ for (n = 0; n < D_CODES; n++) {
3202
+ static_dtree[n * 2 + 1]/*.Len*/ = 5;
3203
+ static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
3204
+ }
3205
+
3206
+ // Now data ready and we can init static trees
3207
+ static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
3208
+ static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);
3209
+ static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);
3210
+
3211
+ //static_init_done = true;
3212
+ }
3213
+
3214
+
3215
+ /* ===========================================================================
3216
+ * Initialize a new block.
3217
+ */
3218
+ function init_block(s) {
3219
+ var n; /* iterates over tree elements */
3220
+
3221
+ /* Initialize the trees. */
3222
+ for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
3223
+ for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
3224
+ for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
3225
+
3226
+ s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
3227
+ s.opt_len = s.static_len = 0;
3228
+ s.last_lit = s.matches = 0;
3229
+ }
3230
+
3231
+
3232
+ /* ===========================================================================
3233
+ * Flush the bit buffer and align the output on a byte boundary
3234
+ */
3235
+ function bi_windup(s)
3236
+ {
3237
+ if (s.bi_valid > 8) {
3238
+ put_short(s, s.bi_buf);
3239
+ } else if (s.bi_valid > 0) {
3240
+ //put_byte(s, (Byte)s->bi_buf);
3241
+ s.pending_buf[s.pending++] = s.bi_buf;
3242
+ }
3243
+ s.bi_buf = 0;
3244
+ s.bi_valid = 0;
3245
+ }
3246
+
3247
+ /* ===========================================================================
3248
+ * Copy a stored block, storing first the length and its
3249
+ * one's complement if requested.
3250
+ */
3251
+ function copy_block(s, buf, len, header)
3252
+ //DeflateState *s;
3253
+ //charf *buf; /* the input data */
3254
+ //unsigned len; /* its length */
3255
+ //int header; /* true if block header must be written */
3256
+ {
3257
+ bi_windup(s); /* align on byte boundary */
3258
+
3259
+ if (header) {
3260
+ put_short(s, len);
3261
+ put_short(s, ~len);
3262
+ }
3263
+ // while (len--) {
3264
+ // put_byte(s, *buf++);
3265
+ // }
3266
+ utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
3267
+ s.pending += len;
3268
+ }
3269
+
3270
+ /* ===========================================================================
3271
+ * Compares to subtrees, using the tree depth as tie breaker when
3272
+ * the subtrees have equal frequency. This minimizes the worst case length.
3273
+ */
3274
+ function smaller(tree, n, m, depth) {
3275
+ var _n2 = n * 2;
3276
+ var _m2 = m * 2;
3277
+ return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
3278
+ (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
3279
+ }
3280
+
3281
+ /* ===========================================================================
3282
+ * Restore the heap property by moving down the tree starting at node k,
3283
+ * exchanging a node with the smallest of its two sons if necessary, stopping
3284
+ * when the heap property is re-established (each father smaller than its
3285
+ * two sons).
3286
+ */
3287
+ function pqdownheap(s, tree, k)
3288
+ // deflate_state *s;
3289
+ // ct_data *tree; /* the tree to restore */
3290
+ // int k; /* node to move down */
3291
+ {
3292
+ var v = s.heap[k];
3293
+ var j = k << 1; /* left son of k */
3294
+ while (j <= s.heap_len) {
3295
+ /* Set j to the smallest of the two sons: */
3296
+ if (j < s.heap_len &&
3297
+ smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
3298
+ j++;
3299
+ }
3300
+ /* Exit if v is smaller than both sons */
3301
+ if (smaller(tree, v, s.heap[j], s.depth)) { break; }
3302
+
3303
+ /* Exchange v with the smallest son */
3304
+ s.heap[k] = s.heap[j];
3305
+ k = j;
3306
+
3307
+ /* And continue down the tree, setting j to the left son of k */
3308
+ j <<= 1;
3309
+ }
3310
+ s.heap[k] = v;
3311
+ }
3312
+
3313
+
3314
+ // inlined manually
3315
+ // var SMALLEST = 1;
3316
+
3317
+ /* ===========================================================================
3318
+ * Send the block data compressed using the given Huffman trees
3319
+ */
3320
+ function compress_block(s, ltree, dtree)
3321
+ // deflate_state *s;
3322
+ // const ct_data *ltree; /* literal tree */
3323
+ // const ct_data *dtree; /* distance tree */
3324
+ {
3325
+ var dist; /* distance of matched string */
3326
+ var lc; /* match length or unmatched char (if dist == 0) */
3327
+ var lx = 0; /* running index in l_buf */
3328
+ var code; /* the code to send */
3329
+ var extra; /* number of extra bits to send */
3330
+
3331
+ if (s.last_lit !== 0) {
3332
+ do {
3333
+ dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
3334
+ lc = s.pending_buf[s.l_buf + lx];
3335
+ lx++;
3336
+
3337
+ if (dist === 0) {
3338
+ send_code(s, lc, ltree); /* send a literal byte */
3339
+ //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
3340
+ } else {
3341
+ /* Here, lc is the match length - MIN_MATCH */
3342
+ code = _length_code[lc];
3343
+ send_code(s, code + LITERALS + 1, ltree); /* send the length code */
3344
+ extra = extra_lbits[code];
3345
+ if (extra !== 0) {
3346
+ lc -= base_length[code];
3347
+ send_bits(s, lc, extra); /* send the extra length bits */
3348
+ }
3349
+ dist--; /* dist is now the match distance - 1 */
3350
+ code = d_code(dist);
3351
+ //Assert (code < D_CODES, "bad d_code");
3352
+
3353
+ send_code(s, code, dtree); /* send the distance code */
3354
+ extra = extra_dbits[code];
3355
+ if (extra !== 0) {
3356
+ dist -= base_dist[code];
3357
+ send_bits(s, dist, extra); /* send the extra distance bits */
3358
+ }
3359
+ } /* literal or match pair ? */
3360
+
3361
+ /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
3362
+ //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
3363
+ // "pendingBuf overflow");
3364
+
3365
+ } while (lx < s.last_lit);
3366
+ }
3367
+
3368
+ send_code(s, END_BLOCK, ltree);
3369
+ }
3370
+
3371
+
3372
+ /* ===========================================================================
3373
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
3374
+ * Update the total bit length for the current block.
3375
+ * IN assertion: the field freq is set for all tree elements.
3376
+ * OUT assertions: the fields len and code are set to the optimal bit length
3377
+ * and corresponding code. The length opt_len is updated; static_len is
3378
+ * also updated if stree is not null. The field max_code is set.
3379
+ */
3380
+ function build_tree(s, desc)
3381
+ // deflate_state *s;
3382
+ // tree_desc *desc; /* the tree descriptor */
3383
+ {
3384
+ var tree = desc.dyn_tree;
3385
+ var stree = desc.stat_desc.static_tree;
3386
+ var has_stree = desc.stat_desc.has_stree;
3387
+ var elems = desc.stat_desc.elems;
3388
+ var n, m; /* iterate over heap elements */
3389
+ var max_code = -1; /* largest code with non zero frequency */
3390
+ var node; /* new node being created */
3391
+
3392
+ /* Construct the initial heap, with least frequent element in
3393
+ * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
3394
+ * heap[0] is not used.
3395
+ */
3396
+ s.heap_len = 0;
3397
+ s.heap_max = HEAP_SIZE;
3398
+
3399
+ for (n = 0; n < elems; n++) {
3400
+ if (tree[n * 2]/*.Freq*/ !== 0) {
3401
+ s.heap[++s.heap_len] = max_code = n;
3402
+ s.depth[n] = 0;
3403
+
3404
+ } else {
3405
+ tree[n * 2 + 1]/*.Len*/ = 0;
3406
+ }
3407
+ }
3408
+
3409
+ /* The pkzip format requires that at least one distance code exists,
3410
+ * and that at least one bit should be sent even if there is only one
3411
+ * possible code. So to avoid special checks later on we force at least
3412
+ * two codes of non zero frequency.
3413
+ */
3414
+ while (s.heap_len < 2) {
3415
+ node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
3416
+ tree[node * 2]/*.Freq*/ = 1;
3417
+ s.depth[node] = 0;
3418
+ s.opt_len--;
3419
+
3420
+ if (has_stree) {
3421
+ s.static_len -= stree[node * 2 + 1]/*.Len*/;
3422
+ }
3423
+ /* node is 0 or 1 so it does not have extra bits */
3424
+ }
3425
+ desc.max_code = max_code;
3426
+
3427
+ /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
3428
+ * establish sub-heaps of increasing lengths:
3429
+ */
3430
+ for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
3431
+
3432
+ /* Construct the Huffman tree by repeatedly combining the least two
3433
+ * frequent nodes.
3434
+ */
3435
+ node = elems; /* next internal node of the tree */
3436
+ do {
3437
+ //pqremove(s, tree, n); /* n = node of least frequency */
3438
+ /*** pqremove ***/
3439
+ n = s.heap[1/*SMALLEST*/];
3440
+ s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
3441
+ pqdownheap(s, tree, 1/*SMALLEST*/);
3442
+ /***/
3443
+
3444
+ m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
3445
+
3446
+ s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
3447
+ s.heap[--s.heap_max] = m;
3448
+
3449
+ /* Create a new node father of n and m */
3450
+ tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
3451
+ s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
3452
+ tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
3453
+
3454
+ /* and insert the new node in the heap */
3455
+ s.heap[1/*SMALLEST*/] = node++;
3456
+ pqdownheap(s, tree, 1/*SMALLEST*/);
3457
+
3458
+ } while (s.heap_len >= 2);
3459
+
3460
+ s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
3461
+
3462
+ /* At this point, the fields freq and dad are set. We can now
3463
+ * generate the bit lengths.
3464
+ */
3465
+ gen_bitlen(s, desc);
3466
+
3467
+ /* The field len is now set, we can generate the bit codes */
3468
+ gen_codes(tree, max_code, s.bl_count);
3469
+ }
3470
+
3471
+
3472
+ /* ===========================================================================
3473
+ * Scan a literal or distance tree to determine the frequencies of the codes
3474
+ * in the bit length tree.
3475
+ */
3476
+ function scan_tree(s, tree, max_code)
3477
+ // deflate_state *s;
3478
+ // ct_data *tree; /* the tree to be scanned */
3479
+ // int max_code; /* and its largest code of non zero frequency */
3480
+ {
3481
+ var n; /* iterates over all tree elements */
3482
+ var prevlen = -1; /* last emitted length */
3483
+ var curlen; /* length of current code */
3484
+
3485
+ var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
3486
+
3487
+ var count = 0; /* repeat count of the current code */
3488
+ var max_count = 7; /* max repeat count */
3489
+ var min_count = 4; /* min repeat count */
3490
+
3491
+ if (nextlen === 0) {
3492
+ max_count = 138;
3493
+ min_count = 3;
3494
+ }
3495
+ tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
3496
+
3497
+ for (n = 0; n <= max_code; n++) {
3498
+ curlen = nextlen;
3499
+ nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
3500
+
3501
+ if (++count < max_count && curlen === nextlen) {
3502
+ continue;
3503
+
3504
+ } else if (count < min_count) {
3505
+ s.bl_tree[curlen * 2]/*.Freq*/ += count;
3506
+
3507
+ } else if (curlen !== 0) {
3508
+
3509
+ if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
3510
+ s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
3511
+
3512
+ } else if (count <= 10) {
3513
+ s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
3514
+
3515
+ } else {
3516
+ s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
3517
+ }
3518
+
3519
+ count = 0;
3520
+ prevlen = curlen;
3521
+
3522
+ if (nextlen === 0) {
3523
+ max_count = 138;
3524
+ min_count = 3;
3525
+
3526
+ } else if (curlen === nextlen) {
3527
+ max_count = 6;
3528
+ min_count = 3;
3529
+
3530
+ } else {
3531
+ max_count = 7;
3532
+ min_count = 4;
3533
+ }
3534
+ }
3535
+ }
3536
+
3537
+
3538
+ /* ===========================================================================
3539
+ * Send a literal or distance tree in compressed form, using the codes in
3540
+ * bl_tree.
3541
+ */
3542
+ function send_tree(s, tree, max_code)
3543
+ // deflate_state *s;
3544
+ // ct_data *tree; /* the tree to be scanned */
3545
+ // int max_code; /* and its largest code of non zero frequency */
3546
+ {
3547
+ var n; /* iterates over all tree elements */
3548
+ var prevlen = -1; /* last emitted length */
3549
+ var curlen; /* length of current code */
3550
+
3551
+ var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
3552
+
3553
+ var count = 0; /* repeat count of the current code */
3554
+ var max_count = 7; /* max repeat count */
3555
+ var min_count = 4; /* min repeat count */
3556
+
3557
+ /* tree[max_code+1].Len = -1; */ /* guard already set */
3558
+ if (nextlen === 0) {
3559
+ max_count = 138;
3560
+ min_count = 3;
3561
+ }
3562
+
3563
+ for (n = 0; n <= max_code; n++) {
3564
+ curlen = nextlen;
3565
+ nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
3566
+
3567
+ if (++count < max_count && curlen === nextlen) {
3568
+ continue;
3569
+
3570
+ } else if (count < min_count) {
3571
+ do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
3572
+
3573
+ } else if (curlen !== 0) {
3574
+ if (curlen !== prevlen) {
3575
+ send_code(s, curlen, s.bl_tree);
3576
+ count--;
3577
+ }
3578
+ //Assert(count >= 3 && count <= 6, " 3_6?");
3579
+ send_code(s, REP_3_6, s.bl_tree);
3580
+ send_bits(s, count - 3, 2);
3581
+
3582
+ } else if (count <= 10) {
3583
+ send_code(s, REPZ_3_10, s.bl_tree);
3584
+ send_bits(s, count - 3, 3);
3585
+
3586
+ } else {
3587
+ send_code(s, REPZ_11_138, s.bl_tree);
3588
+ send_bits(s, count - 11, 7);
3589
+ }
3590
+
3591
+ count = 0;
3592
+ prevlen = curlen;
3593
+ if (nextlen === 0) {
3594
+ max_count = 138;
3595
+ min_count = 3;
3596
+
3597
+ } else if (curlen === nextlen) {
3598
+ max_count = 6;
3599
+ min_count = 3;
3600
+
3601
+ } else {
3602
+ max_count = 7;
3603
+ min_count = 4;
3604
+ }
3605
+ }
3606
+ }
3607
+
3608
+
3609
+ /* ===========================================================================
3610
+ * Construct the Huffman tree for the bit lengths and return the index in
3611
+ * bl_order of the last bit length code to send.
3612
+ */
3613
+ function build_bl_tree(s) {
3614
+ var max_blindex; /* index of last bit length code of non zero freq */
3615
+
3616
+ /* Determine the bit length frequencies for literal and distance trees */
3617
+ scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
3618
+ scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
3619
+
3620
+ /* Build the bit length tree: */
3621
+ build_tree(s, s.bl_desc);
3622
+ /* opt_len now includes the length of the tree representations, except
3623
+ * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
3624
+ */
3625
+
3626
+ /* Determine the number of bit length codes to send. The pkzip format
3627
+ * requires that at least 4 bit length codes be sent. (appnote.txt says
3628
+ * 3 but the actual value used is 4.)
3629
+ */
3630
+ for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
3631
+ if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
3632
+ break;
3633
+ }
3634
+ }
3635
+ /* Update opt_len to include the bit length tree and counts */
3636
+ s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
3637
+ //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
3638
+ // s->opt_len, s->static_len));
3639
+
3640
+ return max_blindex;
3641
+ }
3642
+
3643
+
3644
+ /* ===========================================================================
3645
+ * Send the header for a block using dynamic Huffman trees: the counts, the
3646
+ * lengths of the bit length codes, the literal tree and the distance tree.
3647
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
3648
+ */
3649
+ function send_all_trees(s, lcodes, dcodes, blcodes)
3650
+ // deflate_state *s;
3651
+ // int lcodes, dcodes, blcodes; /* number of codes for each tree */
3652
+ {
3653
+ var rank; /* index in bl_order */
3654
+
3655
+ //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
3656
+ //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
3657
+ // "too many codes");
3658
+ //Tracev((stderr, "\nbl counts: "));
3659
+ send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
3660
+ send_bits(s, dcodes - 1, 5);
3661
+ send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */
3662
+ for (rank = 0; rank < blcodes; rank++) {
3663
+ //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
3664
+ send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
3665
+ }
3666
+ //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
3667
+
3668
+ send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
3669
+ //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
3670
+
3671
+ send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
3672
+ //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
3673
+ }
3674
+
3675
+
3676
+ /* ===========================================================================
3677
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
3678
+ * - TEXT if the two conditions below are satisfied:
3679
+ * a) There are no non-portable control characters belonging to the
3680
+ * "black list" (0..6, 14..25, 28..31).
3681
+ * b) There is at least one printable character belonging to the
3682
+ * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
3683
+ * - BINARY otherwise.
3684
+ * - The following partially-portable control characters form a
3685
+ * "gray list" that is ignored in this detection algorithm:
3686
+ * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
3687
+ * IN assertion: the fields Freq of dyn_ltree are set.
3688
+ */
3689
+ function detect_data_type(s) {
3690
+ /* black_mask is the bit mask of black-listed bytes
3691
+ * set bits 0..6, 14..25, and 28..31
3692
+ * 0xf3ffc07f = binary 11110011111111111100000001111111
3693
+ */
3694
+ var black_mask = 0xf3ffc07f;
3695
+ var n;
3696
+
3697
+ /* Check for non-textual ("black-listed") bytes. */
3698
+ for (n = 0; n <= 31; n++, black_mask >>>= 1) {
3699
+ if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
3700
+ return Z_BINARY;
3701
+ }
3702
+ }
3703
+
3704
+ /* Check for textual ("white-listed") bytes. */
3705
+ if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
3706
+ s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
3707
+ return Z_TEXT;
3708
+ }
3709
+ for (n = 32; n < LITERALS; n++) {
3710
+ if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
3711
+ return Z_TEXT;
3712
+ }
3713
+ }
3714
+
3715
+ /* There are no "black-listed" or "white-listed" bytes:
3716
+ * this stream either is empty or has tolerated ("gray-listed") bytes only.
3717
+ */
3718
+ return Z_BINARY;
3719
+ }
3720
+
3721
+
3722
+ var static_init_done = false;
3723
+
3724
+ /* ===========================================================================
3725
+ * Initialize the tree data structures for a new zlib stream.
3726
+ */
3727
+ function _tr_init(s)
3728
+ {
3729
+
3730
+ if (!static_init_done) {
3731
+ tr_static_init();
3732
+ static_init_done = true;
3733
+ }
3734
+
3735
+ s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
3736
+ s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
3737
+ s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
3738
+
3739
+ s.bi_buf = 0;
3740
+ s.bi_valid = 0;
3741
+
3742
+ /* Initialize the first block of the first file: */
3743
+ init_block(s);
3744
+ }
3745
+
3746
+
3747
+ /* ===========================================================================
3748
+ * Send a stored block
3749
+ */
3750
+ function _tr_stored_block(s, buf, stored_len, last)
3751
+ //DeflateState *s;
3752
+ //charf *buf; /* input block */
3753
+ //ulg stored_len; /* length of input block */
3754
+ //int last; /* one if this is the last block for a file */
3755
+ {
3756
+ send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */
3757
+ copy_block(s, buf, stored_len, true); /* with header */
3758
+ }
3759
+
3760
+
3761
+ /* ===========================================================================
3762
+ * Send one empty static block to give enough lookahead for inflate.
3763
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
3764
+ */
3765
+ function _tr_align(s) {
3766
+ send_bits(s, STATIC_TREES << 1, 3);
3767
+ send_code(s, END_BLOCK, static_ltree);
3768
+ bi_flush(s);
3769
+ }
3770
+
3771
+
3772
+ /* ===========================================================================
3773
+ * Determine the best encoding for the current block: dynamic trees, static
3774
+ * trees or store, and output the encoded block to the zip file.
3775
+ */
3776
+ function _tr_flush_block(s, buf, stored_len, last)
3777
+ //DeflateState *s;
3778
+ //charf *buf; /* input block, or NULL if too old */
3779
+ //ulg stored_len; /* length of input block */
3780
+ //int last; /* one if this is the last block for a file */
3781
+ {
3782
+ var opt_lenb, static_lenb; /* opt_len and static_len in bytes */
3783
+ var max_blindex = 0; /* index of last bit length code of non zero freq */
3784
+
3785
+ /* Build the Huffman trees unless a stored block is forced */
3786
+ if (s.level > 0) {
3787
+
3788
+ /* Check if the file is binary or text */
3789
+ if (s.strm.data_type === Z_UNKNOWN) {
3790
+ s.strm.data_type = detect_data_type(s);
3791
+ }
3792
+
3793
+ /* Construct the literal and distance trees */
3794
+ build_tree(s, s.l_desc);
3795
+ // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
3796
+ // s->static_len));
3797
+
3798
+ build_tree(s, s.d_desc);
3799
+ // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
3800
+ // s->static_len));
3801
+ /* At this point, opt_len and static_len are the total bit lengths of
3802
+ * the compressed block data, excluding the tree representations.
3803
+ */
3804
+
3805
+ /* Build the bit length tree for the above two trees, and get the index
3806
+ * in bl_order of the last bit length code to send.
3807
+ */
3808
+ max_blindex = build_bl_tree(s);
3809
+
3810
+ /* Determine the best encoding. Compute the block lengths in bytes. */
3811
+ opt_lenb = (s.opt_len + 3 + 7) >>> 3;
3812
+ static_lenb = (s.static_len + 3 + 7) >>> 3;
3813
+
3814
+ // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
3815
+ // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
3816
+ // s->last_lit));
3817
+
3818
+ if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
3819
+
3820
+ } else {
3821
+ // Assert(buf != (char*)0, "lost buf");
3822
+ opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
3823
+ }
3824
+
3825
+ if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
3826
+ /* 4: two words for the lengths */
3827
+
3828
+ /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
3829
+ * Otherwise we can't have processed more than WSIZE input bytes since
3830
+ * the last block flush, because compression would have been
3831
+ * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
3832
+ * transform a block into a stored block.
3833
+ */
3834
+ _tr_stored_block(s, buf, stored_len, last);
3835
+
3836
+ } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
3837
+
3838
+ send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
3839
+ compress_block(s, static_ltree, static_dtree);
3840
+
3841
+ } else {
3842
+ send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
3843
+ send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
3844
+ compress_block(s, s.dyn_ltree, s.dyn_dtree);
3845
+ }
3846
+ // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
3847
+ /* The above check is made mod 2^32, for files larger than 512 MB
3848
+ * and uLong implemented on 32 bits.
3849
+ */
3850
+ init_block(s);
3851
+
3852
+ if (last) {
3853
+ bi_windup(s);
3854
+ }
3855
+ // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
3856
+ // s->compressed_len-7*last));
3857
+ }
3858
+
3859
+ /* ===========================================================================
3860
+ * Save the match info and tally the frequency counts. Return true if
3861
+ * the current block must be flushed.
3862
+ */
3863
+ function _tr_tally(s, dist, lc)
3864
+ // deflate_state *s;
3865
+ // unsigned dist; /* distance of matched string */
3866
+ // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
3867
+ {
3868
+ //var out_length, in_length, dcode;
3869
+
3870
+ s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;
3871
+ s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
3872
+
3873
+ s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
3874
+ s.last_lit++;
3875
+
3876
+ if (dist === 0) {
3877
+ /* lc is the unmatched char */
3878
+ s.dyn_ltree[lc * 2]/*.Freq*/++;
3879
+ } else {
3880
+ s.matches++;
3881
+ /* Here, lc is the match length - MIN_MATCH */
3882
+ dist--; /* dist = match distance - 1 */
3883
+ //Assert((ush)dist < (ush)MAX_DIST(s) &&
3884
+ // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
3885
+ // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
3886
+
3887
+ s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
3888
+ s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
3889
+ }
3890
+
3891
+ // (!) This block is disabled in zlib defailts,
3892
+ // don't enable it for binary compatibility
3893
+
3894
+ //#ifdef TRUNCATE_BLOCK
3895
+ // /* Try to guess if it is profitable to stop the current block here */
3896
+ // if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
3897
+ // /* Compute an upper bound for the compressed length */
3898
+ // out_length = s.last_lit*8;
3899
+ // in_length = s.strstart - s.block_start;
3900
+ //
3901
+ // for (dcode = 0; dcode < D_CODES; dcode++) {
3902
+ // out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
3903
+ // }
3904
+ // out_length >>>= 3;
3905
+ // //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
3906
+ // // s->last_lit, in_length, out_length,
3907
+ // // 100L - out_length*100L/in_length));
3908
+ // if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
3909
+ // return true;
3910
+ // }
3911
+ // }
3912
+ //#endif
3913
+
3914
+ return (s.last_lit === s.lit_bufsize - 1);
3915
+ /* We avoid equality with lit_bufsize because of wraparound at 64K
3916
+ * on 16 bit machines and because stored blocks are restricted to
3917
+ * 64K-1 bytes.
3918
+ */
3919
+ }
3920
+
3921
+ exports._tr_init = _tr_init;
3922
+ exports._tr_stored_block = _tr_stored_block;
3923
+ exports._tr_flush_block = _tr_flush_block;
3924
+ exports._tr_tally = _tr_tally;
3925
+ exports._tr_align = _tr_align;
3926
+
3927
+ },{"../utils/common":5}],12:[function(require,module,exports){
3928
+ 'use strict';
3929
+
3930
+
3931
+ function ZStream() {
3932
+ /* next input byte */
3933
+ this.input = null; // JS specific, because we have no pointers
3934
+ this.next_in = 0;
3935
+ /* number of bytes available at input */
3936
+ this.avail_in = 0;
3937
+ /* total number of input bytes read so far */
3938
+ this.total_in = 0;
3939
+ /* next output byte should be put there */
3940
+ this.output = null; // JS specific, because we have no pointers
3941
+ this.next_out = 0;
3942
+ /* remaining free space at output */
3943
+ this.avail_out = 0;
3944
+ /* total number of bytes output so far */
3945
+ this.total_out = 0;
3946
+ /* last error message, NULL if no error */
3947
+ this.msg = ''/*Z_NULL*/;
3948
+ /* not visible by applications */
3949
+ this.state = null;
3950
+ /* best guess about the data type: binary or text */
3951
+ this.data_type = 2/*Z_UNKNOWN*/;
3952
+ /* adler32 value of the uncompressed data */
3953
+ this.adler = 0;
3954
+ }
3955
+
3956
+ module.exports = ZStream;
3957
+
3958
+ },{}],13:[function(require,module,exports){
3959
+ module.exports = function (str) {
3960
+ var bytes = [];
3961
+ for (var i = 0; i < str.length; i++) {
3962
+ var c = str.charCodeAt(i);
3963
+ if (c >= 0xd800 && c <= 0xdbff && i + 1 < str.length) {
3964
+ var cn = str.charCodeAt(i + 1);
3965
+ if (cn >= 0xdc00 && cn <= 0xdfff) {
3966
+ var pt = (c - 0xd800) * 0x400 + cn - 0xdc00 + 0x10000;
3967
+
3968
+ bytes.push(
3969
+ 0xf0 + Math.floor(pt / 64 / 64 / 64),
3970
+ 0x80 + Math.floor(pt / 64 / 64) % 64,
3971
+ 0x80 + Math.floor(pt / 64) % 64,
3972
+ 0x80 + pt % 64
3973
+ );
3974
+ i += 1;
3975
+ continue;
3976
+ }
3977
+ }
3978
+ if (c >= 2048) {
3979
+ bytes.push(
3980
+ 0xe0 + Math.floor(c / 64 / 64),
3981
+ 0x80 + Math.floor(c / 64) % 64,
3982
+ 0x80 + c % 64
3983
+ );
3984
+ }
3985
+ else if (c >= 128) {
3986
+ bytes.push(0xc0 + Math.floor(c / 64), 0x80 + c % 64);
3987
+ }
3988
+ else bytes.push(c);
3989
+ }
3990
+ return bytes;
3991
+ };
3992
+
3993
+ },{}]},{},[1])(1)
3994
+ });